前一段時間在一次遷移中同時用到了數據泵和EXP,發現二者效率的差別還是相當大的。這裏通過一個例子簡單比較一下。
首先比較一下EXP常規模式、EXP直接路徑模式和EXPDP三種方式導出的區別。
這個例子導出10g數據庫上的一個方案,大於40G左右:
$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 6月 1 02:11:29 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select sum(bytes)/1024/1024/1024 from dba_segments where owner = 'ZHEJIANG';
SUM(BYTES)/1024/1024/1024
-------------------------
41.5518188
首先是EXP的常規路徑導出:
$ exp zhejiang/zhejiang file=/data1/zj_regular.dmp buffer=20480000
Export: Release 10.2.0.3.0 - Production on 星期五 6月 1 17:45:06 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options已導出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
. 正在導出 pre-schema 過程對象和操作
. 正在導出用戶 ZHEJIANG 的外部函數庫名
. 導出 PUBLIC 類型同義詞
. 正在導出專用類型同義詞
. 正在導出用戶 ZHEJIANG 的對象類型定義即將導出 ZHEJIANG 的對象...
. 正在導出數據庫鏈接
. 正在導出序號
. 正在導出簇定義
. 即將導出 ZHEJIANG 的表通過常規路徑...
. . 正在導出表 A導出了 1216 行
.
.
.
. . 正在導出表 Z_INVITE_COMM_PUB導出了 147 行
. 正在導出同義詞
. 正在導出視圖
. 正在導出存儲過程
. 正在導出運算符
. 正在導出引用完整性約束條件
. 正在導出觸發器
. 正在導出索引類型
. 正在導出位圖, 功能性索引和可擴展索引
. 正在導出後期表活動
. 正在導出實體化視圖
. 正在導出快照日誌
. 正在導出作業隊列
. 正在導出刷新組和子組
. 正在導出維
. 正在導出 post-schema 過程對象和操作
. 正在導出統計信息成功終止導出, 沒有出現警告。
$ ls -l /data1/zj_regular.dmp
-rw-r--r-- 1 oracle oinstall 18540327936 Jun 1 19:09 /data1/zj_regular.dmp
根據起始時間和結束時間,可以看到常規EXP導出方式執行了1小時24分鐘。
下面看看直接路徑導出方式:
$ exp zhejiang/zhejiang file=/data1/zj_direct.dmp buffer=20480000 recordlength=65535 direct=y
Export: Release 10.2.0.3.0 - Production on 星期五 6月 1 21:06:35 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options已導出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
. 正在導出 pre-schema 過程對象和操作
. 正在導出用戶 ZHEJIANG 的外部函數庫名
. 導出 PUBLIC 類型同義詞
. 正在導出專用類型同義詞
. 正在導出用戶 ZHEJIANG 的對象類型定義即將導出 ZHEJIANG 的對象...
. 正在導出數據庫鏈接
. 正在導出序號
. 正在導出簇定義
. 即將導出 ZHEJIANG 的表通過直接路徑...
. . 正在導出表 A導出了 1216 行
.
.
.
. . 正在導出表 Z_INVITE_COMM_PUB導出了 147 行
. 正在導出同義詞
. 正在導出視圖
. 正在導出存儲過程
. 正在導出運算符
. 正在導出引用完整性約束條件
. 正在導出觸發器
. 正在導出索引類型
. 正在導出位圖, 功能性索引和可擴展索引
. 正在導出後期表活動
. 正在導出實體化視圖
. 正在導出快照日誌
. 正在導出作業隊列
. 正在導出刷新組和子組
. 正在導出維
. 正在導出 post-schema 過程對象和操作
. 正在導出統計信息成功終止導出, 沒有出現警告。
$ ls -l /data1/zj_direct.dmp
-rw-r--r-- 1 oracle oinstall 18460095405 Jun 1 21:24 /data1/zj_direct.dmp
直接路徑導入用時18分鐘,比常規路徑導出速度有一個明顯的提高。最後來看看數據泵的導出速度。
數據泵必須要使用DIRECTORY,下面先建立一個DIRECTORY,然後執行導出操作:
$ expdp zhejiang/zhejiang dumpfile=zj_datapump.dp directory=d_test schemas=zhejiang
Export: Release 10.2.0.3.0 - 64bit Production on 星期五, 01 6月, 2007 21:34:08
Copyright (c) 2003, 2005, Oracle. All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options啓動 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01": zhejiang/******** dumpfile=zj_datapump.dp directory=d_test schemas=zhejiang 正在使用 BLOCKS 方法進行估計...處理對象類型 SCHEMA_EXPORT/TABLE/TABLE_DATA使用 BLOCKS 方法的總估計: 22.25 GB處理對象類型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA處理對象類型 SCHEMA_EXPORT/SYNONYM/SYNONYM處理對象類型 SCHEMA_EXPORT/TYPE/TYPE_SPEC處理對象類型 SCHEMA_EXPORT/DB_LINK處理對象類型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE處理對象類型 SCHEMA_EXPORT/TABLE/TABLE處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/INDEX處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS處理對象類型 SCHEMA_EXPORT/TABLE/COMMENT處理對象類型 SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC處理對象類型 SCHEMA_EXPORT/FUNCTION/FUNCTION處理對象類型 SCHEMA_EXPORT/PROCEDURE/PROCEDURE處理對象類型 SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC處理對象類型 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION處理對象類型 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE處理對象類型 SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY處理對象類型 SCHEMA_EXPORT/TYPE/TYPE_BODY處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS處理對象類型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS處理對象類型 SCHEMA_EXPORT/JOB
. . 導出了 "ZHEJIANG"."ORD_HIT_COMM" 3.255 GB 4176146 行
.
.
.
. . 導出了 "ZHEJIANG"."USR_USER_PLAT_ROLE" 0 KB 0 行已成功加載/卸載了主表 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
ZHEJIANG.SYS_EXPORT_SCHEMA_01 的轉儲文件集爲:
/data1/zj_datapump.dp作業 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01" 已於 21:48:25 成功完成
從導出信息看,數據泵的導出時間僅用了14分鐘,比直接路徑導入方式還快了20%多。而且觀察三個導出文件的大小可以發現,導出速度越快對應的文件也越小,其中數據泵的導出方式得到的文件要比EXP方式小將近1.5G。
$ ls -l /data1/zj_*.d*p
-rw-r----- 1 oracle oinstall 17066897408 Jun 1 21:48 /data1/zj_datapump.dp
-rw-r--r-- 1 oracle oinstall 18460095405 Jun 1 21:24 /data1/zj_direct.dmp
-rw-r--r-- 1 oracle oinstall 18540327936 Jun 1 19:09 /data1/zj_regular.dmp