expdp導出時報錯ora-16000


一、問題現象:在對數據庫進行expdp導出時發生報錯ora-16000,腳本如下:

nohup expdp "'/ as sysdba'" schemas=shp DIRECTORY=DATA_PUMP_DIR dumpfile=shp1.dmp logfile=shp1.log &

報錯如下:

ORA-31626: job does not exist
ORA-31633: unable to create master table "SYS.SYS_EXPORT_SCHEMA_05"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPV$FT", line 1038
ORA-16000: database open for read-only access

由上報錯可知,數據庫read—only,查看數據庫狀態:

SQL> select OPEN_MODE from v$database;

OPEN_MODE
--------------------
READ ONLY

果然,數據庫是只讀狀態。

二、expdp研究

  將數據庫設置為讀寫狀態,觀察expdp

SQL> shutdown immediate
SQL> startup mount
SQL> alter database open read write;

重新執行expdp導出腳本,觀察執行情況

SQL> select job_name,state from dba_datapump_jobs;

JOB_NAME               STATE
------------------------------ ------------------------------
SYS_EXPORT_SCHEMA_01           EXECUTING

通過plsql查看dba_datapump_jobs這個視圖的詳細信息,發現

SQL> col COMMENT$ for a50 
SQL> select * from sys.com$ c  WHERE SUBSTR (c.comment$, 1, 22) = 'Data Pump Master Table';

      OBJ#     COL# COMMENT$
---------- ---------- --------------------------------------------------
     91600          Data Pump Master Table EXPORT
              SCHEMA

通過object_id找到對應的表,其實就是SYS.SYS_EXPORT_SCHEMA_01

在導出數據的過程中可以看到其表結構(截取了部分列名稱)

查看這張表的數據,發現這張表記錄了字符集,路徑,導出的對象,時間,並行度等信息

在導出結束后,這張表將會自動清除。

Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:
  /oracle/admin/orcl/dpdump/shp1.dmp
Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Sat Mar 16 03:14:49 2019 elapsed 0 00:00:18

三、總結

  在使用expdp導出數據時,系統會自動創建數據泵主表(Data Pump Master Table)並插入相關數據,如果數據庫是只讀模式,無法創建失敗,無法導出數據。在expdp導出完畢后,系統會自動刪除數據泵主表,注意此表默認表空間為system表空間,在數據量大並行度高的導出需要關注一下表空間使用情況。

 

四、建議

  在對只讀庫進行數據導出的時候可以采用exp導出,或者使用expdp+network_link方式進行數據導出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM