標籤:oracle impdp expdp
Oracle11g以後的新特性使得預設條件下在分配資料表空間時忽略空表,以減少資料表空間的資源佔用,這樣使得在使用Oracle的exp匯出使用者資料時就會忽略空表,這樣就會造成資料的不完整,當然在使用exp匯出資料時也不是沒有辦法,這個以前有提到過,在此就不做過多的贅述了http://jim123.blog.51cto.com/4763600/1934205。使用這種方法是可以解決在使用exp匯出使用者資料時不會忽略空表,但是還有更為高效的辦法就是使用expdp/impdp ——Oracle資料泵,來對Oracle資料進行匯入匯出,相比exp/imp而言expdp/impdp是更為高效的資料匯入匯出時使用的工具,當然在這裡就expdp/impdp和exp/imp的區別簡單的說一說。
和exp不同,在使用expdp匯出資料時先要用DBA使用者進入Oracle中執行一條指定備份路徑後再授權可讀寫後,才能操作,具體操作步驟如下:
SQL> create or replace directory dpdata1 as ‘/data/backup/oracle_backup‘;Directory created.SQL> grant read,write on directory dpdata1 to u01;Grant succeeded.SQL> grant read,write on directory dpdata1 to u02;Grant succeeded.SQL> select * from dba_directories;
這裡dpdatal指定下要備份匯出資料的路徑,然後授權這個目錄給要匯出使用者,這裡要注意的是這個目錄必須是Oracle使用者的屬組以確保檔案許可權可寫入,在完成指定備份目錄後就可以用expdp開始匯出資料了,在使用expdp匯出資料時會有import.log的記錄檔產生,因為在這裡是多個使用者匯出,我這裡就指定下記錄檔的檔案名稱
[[email protected] ~]$ expdp u01/passwword_u01 directory=dpdata1 dumpfile=u01.dmp logfile=u01.logexpdp u02/password_u02 directory=dpdata1 dumpfile=u02.dmp logfile=u02.log
在匯出後就會在指定的備份目錄下產生備份檔案和日誌。
在匯入的時候使用impdp匯入,具體的使用方法同imp差不多,不過需要的是要指定備份目錄,操作如下:
[[email protected] oracle_backup]$ impdp u01/passwword_u01 directory=dpdata1 dumpfile=u02.dmp FULL=y[[email protected] oracle_backup]$ impdp u02/passwword_u02 directory=dpdata1 dumpfile=u02.dmp FULL=y
這樣就匯入完成了,不過在這裡需要注意的一點是在使用impdp匯入資料時,如果Oracle中沒有建立相應的使用者時,在匯入後也會自動建立使用者,所以在匯入的時候需要注意千萬不要把資料導錯了,簡單的Oracle資料泵expdp/impdp大致就是如此,其他還有按照表名、查詢條件、全庫匯入匯出的操作大致是一樣,僅僅是需要修改幾個參數,在此就不做過多的說明了
本文出自 “技術隨筆” 部落格,謝絕轉載!
Oracle資料泵expdp/impdp