ORACLE備份還原(expdp/impdp)

jopen 10年前發布 | 12K 次閱讀 Oracle 數據庫服務器

1. 創建目錄

SQL> create directory dump_file as ‘/db/backup’;

2. 目錄賦權限

SQL> grant read,write on directorydump_file to bam;

  查看目錄

SQL> select * from dba_directories;

3. 備份

SQL>expdp user/pwd directory=dump_filedumpfile=expdp_%U.dmp logfile=expdp.log filesize=20G

4. 還原

SQL>impdp user/pwd directory=dump_filedumpfile=expdp_%U.dmp logfile=impdp.log

 

備份內容(content):

(1)備份所有(對象結構、數據):content = all(默認)

(2)邏輯備份(只有對象結構):content = metadata_only

(3)數據備份(只有數據):content = data_only(導入時,需要確保數據定義已經存在,如果已經存在,導入時最好指定data_only)

 

過濾已經存在的數據(table_exists_action):

(1)table_exists_action = skip:跳過該表,繼續處理下一個表(如果同時指定了CONTENT參數為Data_only的話,skip參數無效,默認為append)

(2)table_exists_action = append:繼續添加數據

(3)table_exists_action = truncate:截斷表,再添加數據

(4)table_exists_action = replace:刪除并重建表,再添加數據(如果同時指定了CONTENT參數為Data_only的話,replace參數無效)

 

重定義對象所屬用戶(Remap_schema):

語法:REMAP_SCHEMA=Source_schema:Target_schema[,Source_schema:Target_schema]

(Remap_schema=a:b,c:d這個可以,但是不能在同一個IMPDP命令中指定remap_schema=a:b,a:c.)

 

重定義對象的表空間(remap_tablespace):

REMAP_TABLESPACE=Source_tablespace:Target_tablespace[,Source_tablespace:Target_tablespace]

 

優化導入/導出效率(parallel):

(1)對于導出來說,由于dump文件只能由一個線程進行操作(包括I/O處理),因此如果輸出的DUMP文件只有一個,即使你指定再多的并行,實際工作仍然是一個,而且還會觸發ORA-39095錯誤。因此,建議設置該參數小于或等于生成的DUMP文件數量。那么,如何控制生成的DUMP文件數量呢?

EXPDP命令提供了一個FILESIZE參數,用來指定單個DUMP文件的最大容量,要有效的利用parallel參數,filesize參數必不可少。

舉例:某用戶對象占用了4G左右的空間,實際導出后的DUMP文件約為3G,我們嘗試在導出該用戶時指定并行度為4,設置單個文件不超過500M,則設置:parallel = 4;

(2)對于導入來說,使用parallel參數則要簡單的多,我認為導入更能體現parallel參數的優勢。參數設置為幾,則認為同時將幾張表的內容導入到庫中。

舉例:某dmp文件中包含了200張表,我們嘗試在導入該DMP文件時指定并行度為10,則設置:parallel = 10。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!