Oracle 10g expdp/impdp在項目中實踐總結(jié) |
發(fā)布時間: 2012/7/28 17:10:30 |
自 Oracle 10g 版本開始,數(shù)據(jù)泵 (data dump) 作為一種新的數(shù)據(jù)移動技術(shù)提供出來。使用這個技術(shù)工具分別為 expdp 和 impdp 。我們在實際項目中經(jīng)常使用到它們,如從生產(chǎn)庫向測試庫遷移數(shù)據(jù)。 我介紹一下這兩個工具的用途、使用方法、以及它們與 9i 的 imp/exp 的區(qū)別。 expdp 和 impdp 的主要用途有三點,分別是: 1 、實現(xiàn)數(shù)據(jù)庫的邏輯備份和恢復; 2 、在相同或不同的數(shù)據(jù)庫的不同用戶之間移動數(shù)據(jù)庫對象如表定義和數(shù)據(jù)、函數(shù)、存儲過程; 3 、可以和 rman 聯(lián)合使用,實現(xiàn)表空間級別的數(shù)據(jù)快速遷移。 (注,這個用途,我專門在一文中注明了其實現(xiàn)過程: exp/expdp 傳輸表空間和 rman convert 實現(xiàn)大數(shù)據(jù)量快速遷移 http://www.linuxidc.com/Linux/2012-06/62056.htm) expdp 和 impdp 的使用中有很多參數(shù)選項,不同的選項實現(xiàn)不同的功能。這里先重點介紹一下 expdp 的主要功能點。 1 、導出某一個用戶,加 schemas 2 、導出一個用戶下導出部分表,加 tables 3 、導出一個用戶下不包括某些表,加 exclude 4 、導出所有表的符合某個條件(如表的前 10000 行)的記錄,加 query 5 、導出某個時間點或 SCN 的數(shù)據(jù)鏡像,加 flashback_time 或 flashback_scn 這個功能用于 streams 、 ogg 等數(shù)據(jù)實時同步工具的實例化操作。 6 、導出數(shù)據(jù)庫的元數(shù)據(jù)或全部數(shù)據(jù),加 CONTENT={ALL | DATA_ONLY | METADATA_ONLY} 7 、導出數(shù)據(jù)庫某個表空間的元數(shù)據(jù),用于表空間快速遷移,加 transport_tablespace=y tablespaces=tbs_name 8 、限制每個導出文件的大小,加 filesize 還可以限制每個導出文件的大小,加并行度,統(tǒng)計導出對象等其他功能。這些功能我日常用的不多,可以參數(shù) expdp –help 。 expdp 工具的使用示例如下: expdp qlzq/qlzqp SCHEMAS=ebmall directory=test dumpfile=ebmall.dmp logfile=ebmall.log 這是實現(xiàn)將用戶 ebmall 下所有對象導出到目錄 test 下的 ebmall.dmp 文件中的操作,記錄的日志文件為 ebmall.log 。 expdp qlzq/qlzqp directory=test dumpfile=qlzq.dmp logfile=qlzq.log EXCLUDE=TABLE:\"IN \(\'CMS_DOC_BODY\',\' MAIL_QUEUE_FILE\',\'S ERVICE_LOG\',\'MSG_MAIL_HISTORY\',\'MAIL_QUEUE_FILE\'\)\" 這是實現(xiàn)導出一個用戶下除掉部分表之外的所有對象的操作。在 expdp 使用過程中,這三個參數(shù) directory 、 dumpfile 、 logfile 是必須加上。 impdp 工具的功能有很多,主要使用到的功能是 rmap_schema ,參數(shù)為 REMAP_SCHEMA=source_schema:target_schema 其他的功能可參考 impdp -help impdp system/oracl directory=qlzq dumpfile=qlzq.dmp logfile=qlzq.log 在目標庫上,導入前沒有 qlzq 用戶,使用 impdp 導入時可以自動創(chuàng)建。新建用戶的密碼都會和源庫一樣。導入前需要將表空間建立好,大小合適。 如果源庫的 dmp 文件是使用 system 用戶導出的另一個用戶,則需要加 schemas 選項,指定導入用戶。 如導出該 dmp 文件的用戶是 qlzq, 那么導入時我們則需要執(zhí)行 schemals 參數(shù)值 使用方法如下: impdp system/oracl directory=qlzq schemas=ebmall dumpfile=ebmall.dmp logfile=ebmall.log 10g 的 expdp/impdp 和 exp/imp 的區(qū)別,我認為最主要的部分是前者是只能運行在數(shù)據(jù)庫服務器端,后者可以在客戶端或服務器端同時運行。 這個區(qū)別就涉及到跨平臺的數(shù)據(jù)導入導出的問題。 本文出自:億恩科技【www.allwellnessguide.com】 1 、實現(xiàn)數(shù)據(jù)庫的邏輯備份和恢復; 2 、在相同或不同的數(shù)據(jù)庫的不同用戶之間移動數(shù)據(jù)庫對象如表定義和數(shù)據(jù)、函數(shù)、存儲過程; 3 、可以和 rman 聯(lián)合使用,實現(xiàn)表空間級別的數(shù)據(jù)快速遷移。 (注,這個用途,我專門在一文中注明了其實現(xiàn)過程: exp/expdp 傳輸表空間和 rman convert 實現(xiàn)大數(shù)據(jù)量快速遷移 http://www.linuxidc.com/Linux/2012-06/62056.htm) expdp 和 impdp 的使用中有很多參數(shù)選項,不同的選項實現(xiàn)不同的功能。這里先重點介紹一下 expdp 的主要功能點。 1 、導出某一個用戶,加 schemas 2 、導出一個用戶下導出部分表,加 tables 3 、導出一個用戶下不包括某些表,加 exclude 4 、導出所有表的符合某個條件(如表的前 10000 行)的記錄,加 query 5 、導出某個時間點或 SCN 的數(shù)據(jù)鏡像,加 flashback_time 或 flashback_scn 這個功能用于 streams 、 ogg 等數(shù)據(jù)實時同步工具的實例化操作。 6 、導出數(shù)據(jù)庫的元數(shù)據(jù)或全部數(shù)據(jù),加 CONTENT={ALL | DATA_ONLY | METADATA_ONLY} 7 、導出數(shù)據(jù)庫某個表空間的元數(shù)據(jù),用于表空間快速遷移,加 transport_tablespace=y tablespaces=tbs_name 8 、限制每個導出文件的大小,加 filesize 還可以限制每個導出文件的大小,加并行度,統(tǒng)計導出對象等其他功能。這些功能我日常用的不多,可以參數(shù) expdp –help 。 expdp 工具的使用示例如下: expdp qlzq/qlzqp SCHEMAS=ebmall directory=test dumpfile=ebmall.dmp logfile=ebmall.log 這是實現(xiàn)將用戶 ebmall 下所有對象導出到目錄 test 下的 ebmall.dmp 文件中的操作,記錄的日志文件為 ebmall.log 。 expdp qlzq/qlzqp directory=test dumpfile=qlzq.dmp logfile=qlzq.log EXCLUDE=TABLE:\"IN \(\'CMS_DOC_BODY\',\' MAIL_QUEUE_FILE\',\'S ERVICE_LOG\',\'MSG_MAIL_HISTORY\',\'MAIL_QUEUE_FILE\'\)\" 這是實現(xiàn)導出一個用戶下除掉部分表之外的所有對象的操作。在 expdp 使用過程中,這三個參數(shù) directory 、 dumpfile 、 logfile 是必須加上。 impdp 工具的功能有很多,主要使用到的功能是 rmap_schema ,參數(shù)為 REMAP_SCHEMA=source_schema:target_schema 其他的功能可參考 impdp -help impdp system/oracl directory=qlzq dumpfile=qlzq.dmp logfile=qlzq.log 在目標庫上,導入前沒有 qlzq 用戶,使用 impdp 導入時可以自動創(chuàng)建。新建用戶的密碼都會和源庫一樣。導入前需要將表空間建立好,大小合適。 如果源庫的 dmp 文件是使用 system 用戶導出的另一個用戶,則需要加 schemas 選項,指定導入用戶。 如導出該 dmp 文件的用戶是 qlzq, 那么導入時我們則需要執(zhí)行 schemals 參數(shù)值 使用方法如下: impdp system/oracl directory=qlzq schemas=ebmall dumpfile=ebmall.dmp logfile=ebmall.log 10g 的 expdp/impdp 和 exp/imp 的區(qū)別,我認為最主要的部分是前者是只能運行在數(shù)據(jù)庫服務器端,后者可以在客戶端或服務器端同時運行。 這個區(qū)別就涉及到跨平臺的數(shù)據(jù)導入導出的問題。 本文出自:億恩科技【www.enidc.com】 --> |