web-dev-qa-db-ja.com

Oracle Data Pump、ジョブを一時停止

現在、かなり大きなスキーマ(2TB)で実行されているimpdpジョブがあり、エラーが発生しました。ソースデータベースには、宛先データベースよりも大きい1つの列があります。これにより、ORA-02374およびORA-12899エラーが発生します。これにより、インポートジョブがこの1つのテーブルをクロールするようになりました。

私はエラーを乗り越えようとしています、そして私が思いつくことができる最良の解決策はテーブル定義を修正するか、インポートジョブに現在のテーブルをスキップするように伝えることです。データポンプジョブでテーブルがロックされているため、現在テーブル定義を修正できません。

ジョブを一時停止し、列を変更してから、インポートを再開する方法はありますか?または、現在のテーブルをスキップして次に進むようにジョブに指示する方法はありますか?これにより、ジョブが終了したら戻ってきて、テーブル定義を修正してから、1つのテーブルだけを再インポートできます。

ETA:これはインポートの最後のいくつかのテーブルの1つです。全体を削除してやり直すのではなく、.

3
Patrick

ジョブを停止してテーブルを変更し、後で現在のオブジェクトをスキップするかどうかにかかわらずジョブを続行できます。

デモ:

 [Oracle@localhost]$ impdp jay/password directory=dp_dir  tables=imptest, imptest2 content=data_only dumpfile=exp_jay_imptest.dmp
 ...

 ORA-02374: conversion error loading table "JAY"."IMPTEST"
 ORA-12899: value too large for column NAME (actual: 12, maximum: 10)

 ORA-02372: data for row: NAME : 'mysamplename'


 ^C--Press CTRL+C keys.
 Import> stop_job=immediate
 Are you sure you wish to stop this job ([yes]/no): yes

次に、テーブル定義を変更します。

 SQL> alter table imptest modify name varchar2(20);

 Table altered.

 SQL> exit

 [Oracle@localhost]$ impdp jay/password attach=SYS_IMPORT_TABLE_01--- you can get job name from log file.

 Import> start_job

 Import> continue_client
 Job SYS_IMPORT_TABLE_01 has been reopened at Tue Oct 11 07:39:12 2016 
 Restarting "JAY"."SYS_IMPORT_TABLE_01":  jay/password directory=dp_dir tables=imptest,imptest2 content=data_only dumpfile=exp_jay_imptest.dmp 
 . . imported "JAY"."IMPTEST"                             19.00 MB 1049211 out of 1048576 rows
 . . imported "JAY"."IMPTEST2"                            7.710 KB     396 rows
 Job "JAY"."SYS_IMPORT_TABLE_01" successfully completed at Tue Oct 11 07:40:13 2016 elapsed 0 00:01:02
4
JSapkota