Oracle

Oracle 數據泵,暫停作業

  • October 11, 2016

我目前正在為相當大的架構(2TB)執行 impdp 作業並遇到錯誤。源數據庫有一列比目標數據庫大。這會導致 ORA-02374 和 ORA-12899 錯誤。這導致導入作業在這張表上爬行。

我試圖克服這些錯誤,我能想出的最佳解決方案是修復表定義,或者告訴導入作業跳過目前表。我目前無法修復表定義,因為數據泵作業已鎖定表。

有沒有辦法暫停作業,修改列,然後恢復導入?或者有沒有辦法告訴工作跳過目前表並繼續前進?這將允許在作業完成後返回,修復表定義,然後僅重新導入一個表。

ETA:這是導入中最後幾張表之一,我寧願不殺死整個事情並重新開始。

好吧,您可以停止作業並在表中進行更改,然後跳過目前對象繼續作業。

展示:

[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

引用自:https://dba.stackexchange.com/questions/151902