oracle資料庫的impdp,expdp
oracle資料庫在遷移的時候如果資料庫的資料量在100G以內,建議是用資料泵,如果資料庫的資料量大於100G,建議使用其它的資料同步工具。
oracle資料庫使用資料泵匯入匯出的是 相同的資料庫版本,相同的使用者名稱字,相同的表空間 ,想要看匯出的情況可以加個引數logfile=日誌的名字,檢視匯出匯入的詳細過程,
建立目錄
create directory dump_dir as '/home/oracle/dump/'
grant read,write on directory dump_dir to public;
資料的匯出
--1)按使用者導
expdp scott/[email protected]
--2)並行程序parallel
expdp scott/[email protected]:1521/orcl directory=dump_dir dumpfile=scott3.dmp parallel=40 job_name=scott3
--3)按表名導( 多張表使用逗號隔開 )
expdp scott/[email protected]:1521/orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dump_dir;
--4)按查詢條件導
expdp scott/[email protected]:1521/orcl directory=dump_dir dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
--5)按表空間導( 多個表空間使用逗號隔開 )
expdp system/oracle DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=temp,example ;
--6)導整個資料庫
expdp system/oracle DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
------------------------------------------------------------------------------------------------------------
資料的匯入
--1)導到指定使用者下
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=expdp.dmp SCHEMAS=scott;
--2)匯入表
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=expdp.dmp TABLES=scott.dept;
--3)匯入表空間
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=example;
--4)匯入資料庫
impdb system/oracle DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
-------------------------------------------------------------------------------------------------------------
如果是不同版本資料庫,不同使用者,不同表空間需要使用version,remap_tablespace,remap_schemas
其中
-------------------------------------------------------------------------------------------------------------
多個表空間物件匯入到一個表空間中
impdp yngtts/yngtts DIRECTORY=DATA_PUMP_DIR dumpfile=mydir:yngtts0514.dmp logfile=mydir:yngtts0514.log remap_schema=yngtts/yngtts remap_tablespace='(TS_YNGT:TS_YNGT,CWFTS:TS_YNGT,TS_EDIDB_DEFAULT:TS_YNGT)'
------------------------------------------------------------------------------------------------------------
TABLE_EXISTS_ACTION
TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
SKIP按原樣離開表並移動到下一個物件。如果CONTENT引數設定為,則這不是有效選項DATA_ONLY。
APPEND 從源載入行並保持現有行不變。
TRUNCATE 刪除現有行,然後從源載入行。
REPLACE刪除現有表,然後從源建立並載入它。如果CONTENT引數設定為,則這不是有效選項DATA_ONLY。
使用這些選項時,以下注意事項適用:
使用TRUNCATE或時REPLACE,請確保受影響的表中的行不是任何引用約束的目標。
在源中使用SKIP,APPEND或者TRUNCATE現有的表依賴物件(如索引,授權,觸發器和約束)不會被修改。因為REPLACE,如果未明確或隱式排除(使用EXCLUDE)它們並且它們存在於源轉儲檔案或系統中,則從源中刪除並重新建立從屬物件。
使用APPEND或時TRUNCATE,會執行檢查以確保源中的行與現有表相容,然後再執行任何操作。
如果現有表具有活動約束和觸發器,則使用外部表訪問方法載入它。如果任何行違反了活動約束,則載入失敗並且不載入任何資料。您可以通過DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS在“匯入”命令列上指定來覆蓋此行為。
如果您有必須載入的資料,但可能導致約束違規,請考慮禁用約束,載入資料,然後在重新啟用約束之前刪除問題行。
使用時APPEND,資料總是載入到新空間; 即使可用,現有空間也不會被重複使用。因此,您可能希望在載入後壓縮資料。