1. 程式人生 > >oracle資料庫的impdp,expdp

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]

:1521/orcl  schemas=scott  dumpfile=expdp.dmp DIRECTORY=dump_dir;

--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,資料總是載入到新空間; 即使可用,現有空間也不會被重複使用。因此,您可能希望在載入後壓縮資料。