如何使用Oracle數據泵 expdp/impdp進行庫的導出和導入


第一步  用sys用戶在源庫建立數據目錄,並將數據目錄讀寫權限、數據庫的導入與導出權限,賦給相應的數據庫用戶

CREATE OR REPLACE DIRECTORY dir_dump AS '/opt/backup/';

 GRANT read,write ON DIRECTORY dir_dump TO lcsdb;

grant EXP_FULL_DATABASE,IMP_FULL_DATABASE to lcsdb;

第二步 檢查tnsname.ora

檢查服務名配置文件中是否配置了要導出的庫的實例名稱,如沒有配置全部加上

第三步 使用expdp進行數據庫的全庫導出

 expdp 用戶名/密碼@庫名稱 directory=dir_dump dumpfile=rptdb_bck.dmp logfile=rptdb_bck.log FULL=y;

第四步  用sys用戶登陸目標庫后,再目標庫建立數據目錄,並將數據目錄讀寫權限、授權給普通用戶數據庫導出與到導入的角色權限

CREATE OR REPLACE DIRECTORY dir_dump AS '/opt/backup/';

 grant EXP_FULL_DATABASE,IMP_FULL_DATABASE to lcsdb;

第五步 使用impdp進行數據庫的全庫導入,可以映射表空間和用戶

impdp 用戶名/密碼@庫名稱 remap_schema=lcc:lcsdb directory=dir_dump dumpfile=fullbak.dmp logfile=fullimp_lc.log

 

 

2:導入表結構定義時,要做好幾件事情。

 

    2.1  原始表與目標表位於不同的SCHEMA,那么導入的時候,就必須完成這種轉換,可以使用REMAP_SCHEMA參數將表和數據從一個SCHEMA轉移到另外一個SCHEMA,其作用類似於老的imp工具中的fromuser和touser參數,impdp中將fromuser和touser參數合並成了REMAP_SCHEMA參數。該參數的使用方法REMAP_SCHEMA=source_schema:target_schema.

   

        注意事項:即使你指定的對應SCHEMA不存在,只要導入時連接的用戶有足夠的權限,就會使用DUMP文件中的CREATE USER的metadata來創建一個對應的用戶。

     

   2.2  一般而言,對應SCHEMA(User)有默認的表空間,有可能不同SCHEMA默認的表空間不同,那么就必須用參數REMAP_TABLESPACE來解決導入數據更改表空間的情形,否則就會遇到ORA-01950: no privileges on tablespace 'xxxxx' 這種錯誤。

   

        注意事項:有可能原始表的數據和索引位於不同的表空間,所以可能需要匹配多個表空間,具體操作為REMAP_TABLESPACE=src1:dst1 REMAP_TABLESPACE=src2:dst2

 

   2.3 邏輯沖突,這個無關工具的關系,而是由於邏輯關系緣故。

 

        如下案例所示,例如原表"TEST"."INV_CARTONS"跟"TEST"."INV_STORE_CODES"有主外鍵關系。但是我們沒有導出、導入"TEST"."INV_STORE_CODES",那么此時不存在"TEST_ARCH"."INV_STORE_CODES",所以拋出一個錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM