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。