現在、かなり大きなスキーマ(2TB)で実行されているimpdpジョブがあり、エラーが発生しました。ソースデータベースには、宛先データベースよりも大きい1つの列があります。これにより、ORA-02374およびORA-12899エラーが発生します。これにより、インポートジョブがこの1つのテーブルをクロールするようになりました。
私はエラーを乗り越えようとしています、そして私が思いつくことができる最良の解決策はテーブル定義を修正するか、インポートジョブに現在のテーブルをスキップするように伝えることです。データポンプジョブでテーブルがロックされているため、現在テーブル定義を修正できません。
ジョブを一時停止し、列を変更してから、インポートを再開する方法はありますか?または、現在のテーブルをスキップして次に進むようにジョブに指示する方法はありますか?これにより、ジョブが終了したら戻ってきて、テーブル定義を修正してから、1つのテーブルだけを再インポートできます。
ETA:これはインポートの最後のいくつかのテーブルの1つです。全体を削除してやり直すのではなく、.
ジョブを停止してテーブルを変更し、後で現在のオブジェクトをスキップするかどうかにかかわらずジョブを続行できます。
デモ:
[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