ORACLE備份還原(expdp/impdp)
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。