oracle資料庫的impdp,expdp

記錄每一次錯誤發表於2018-10-10

oracle資料庫在遷移的時候如果資料庫的資料量在100G以內,建議是用資料泵,如果資料庫的資料量大於100G,建議使用其它的資料同步工具。 

如果使用者對停機的時間,沒有要求,可以考慮按使用者進行進行資料遷移,

impdp,expdp可以實現跨平臺,跨版本的資料遷移。

oracle資料庫使用資料泵匯入匯出的是 相同的使用者名稱字,相同的表空間,想要看匯出的情況可以加個引數logfile=日誌的名字,檢視匯出匯入的詳細過程,如果不是相同 相同的使用者名稱字,相同的表空間,需要新增相關引數

建立目錄

create  directory dump_dir  as  '/home/oracle/dump/'

grant  read,write  on directory dump_dir to public;

資料的匯出

--1)按使用者導

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

--2)並行程式parallel

expdp scott/tiger@192.168.0.110:1521/orcl directory=dump_dir dumpfile=scott3.dmp  parallel=40 job_name=scott3

--3)按表名導( 多張表使用逗號隔開)

expdp scott/tiger@192.168.0.110:1521/orcl   TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dump_dir;

--4)按查詢條件導

expdp scott/tiger@192.168.0.110: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 \'/ as sysdba\'      DIRECTORY=dump_dir DUMPFILE=tablespace.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)匯入資料庫

impdp system/oracle DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

-------------------------------------------------------------------------------------------------------------

如果是不同版本資料庫,不同表空間,不同使用者需要使用version,remap_tablespace,remap_schema

其中

-------------------------------------------------------------------------------------------------------------

如果是從原庫的某個使用者只是匯出使用者下的表結構,不匯出資料,也就是我們常說的只匯出某個使用者下的後設資料(後設資料被稱為管理資料的資料,比如表的結構就被成為後設資料),在expdp的時候需要使用

content=metadata_only引數

-------------------------------------------------------------------------------------------------------------

 多個表空間物件匯入到一個表空間中

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547066/viewspace-2215740/,如需轉載,請註明出處,否則將追究法律責任。

相關文章