expdp和impdp常用於ORACLE數據庫的導入導出。
expdp導出數據庫
1、root用戶創建用於impdp/expdp導入導出的目錄;
# mkdir -p /home/dmpdata # chown oracle:oinstall /home/dmpdata
2、切換到oracle用戶,dba用戶登錄創建邏輯目錄
sqlplus / as sysdba SQL> create directory DMP_DATA_DIR as '/home/dmpdata'; #創建 SQL> select * from dba_directories; #查看創建結果
說明:如果已經存在DMP_DATA_DIR目錄但是值不同,可先執行drop directory DMP_DATA_DIR;刪除重建。
3、給待導出數據庫用戶TEST賦予在指定目錄DMP_DATA_DIR的操作權限
SQL> grant read,write on directory DMP_DATA_DIR to TEST;
4、導出TEST數據庫
expdp system/oracle schemas=TEST dumpfile=TEST_20171020.dmp DIRECTORY=DMP_DATA_DIR logfile=expdp_TEST_20171020.log
5、檢查/home/dmpdata路徑下導出的dmp文件、expdp導出日志結果顯示successfully completed則表示導出成功,結束。
impdp導入數據庫
前提:預先創建好導入數據庫涉及的表空間。如果是大數據量導入,確保空間足夠。
方法一:不預先創建數據庫,impdp直接導入自動創建TEST2數據庫用戶,密碼為TEST數據庫密碼。也就是與舊的數據庫密碼一致。
impdp system/oracle remap_schema=TEST:TEST2 directory=DUMP_DATA_DIR dumpfile=expdp_TEST_20171020.dmp logfile=impdp_TEST2_20171020.log
方法二:預先創建數據庫,impdp導入待EXCLUDE=user參數,可以避免出現ORA-31684錯誤。
1、預先創建數據庫
SQL> create user test2 identified by test2; SQL> grant dba,connect,resource to test2; SQL> grant read,write on directory DMP_DATA_DIR to TEST2;
2、導入備份的數據庫
impdp system/oracle remap_schema=TEST:TEST2 EXCLUDE=user directory=DUMP_DATA_DIR dumpfile=expdp_TEST_20171020.dmp logfile=impdp_TEST2_20171020.log
說明:如果導入的表空間發生變化,可以使用remap_tablespace=old_tablespace:new_tablespace解決,類似remap_schema參數
基本設計思路
參考impdp/expdp手工操作
使用方法
1、下載代碼:exp_imp_oradb.sh
2、登錄root用戶,創建/home/dmpdata目錄,並賦權限chown oracle:oinstall /home/dmpdata
3、上傳expimp_db.sh文件到oracle用戶的相關目錄下,可任意目錄。
4、執行chmod +x exp_imp_oradb.sh賦予可執行權限。
5、執行expimp_db.sh imp db1 [db2] 導入數據庫 或者expimp_db.sh exp db1 [db2] 導出數據庫
說明:導入時數據庫的dmp文件名為expdp_${CURRENT_DATE}_${dbname}.log。就是中間的時間變量是當前日期,如果不是,手工修改再執行。