Oracle-Linux

Oracle 數據庫模式導出

  • February 17, 2020

我正在嘗試通過expdep在 oracle 數據庫上執行模式導出:

expdp somedatabase/something directory=EXP_DIR schemas=someschema dumpfile=dumpfile.dmp logfile=logfile.log

上面的命令(儘管為了發布這個問題而進行了編輯)之前一直在工作,但現在我收到了這個錯誤:

ORA-31626: job does not exist
ORA-31633: unable to create master table "SOMEDATABASE.SYS_EXPORT_SCHEMA_09"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPV$FT", line 1161
ORA-01658: unable to create INITIAL extent for segment in tablespace USERS
ORA-06512: at "SYS.KUPV$FT", line 1054
ORA-06512: at "SYS.KUPV$FT", line 1042

我有理由相信,根本原因是存在與早期數據泵相關的停滯作業,這些作業被半中止 (ctrl+c) 並刪除了目標文件。

如何清除這些作業,以便我可以從頭開始重新啟動數據泵?

從外觀上看,我在 Centos 上執行的是 12.2.0.1 版本。

我設法找到了一個隱藏在Google搜尋結果深處的解決方案。這對我有用:

第 1 步:查找停滯的工作:

SELECT o.status, o.object_id, o.object_type,        o.owner||'.'||object_name "OWNER.OBJECT"      FROM dba_objects o, dba_datapump_jobs j      WHERE o.owner=j.owner_name AND o.object_name=j.job_name       AND j.job_name NOT LIKE 'BIN$%' ORDER BY 4,2;

第 2 步,刪除它們:

drop table TABLENAME_RETURNED_IN_STEP_1;

在此之後,我能夠像以前一樣進行導出。

引用自:https://serverfault.com/questions/1003429