10g資料泵和匯入匯出效能對比(五)

yangtingkun發表於2009-06-19

前一段時間在一次遷移中同時用到了資料泵和EXP,發現二者效率的差別還是相當大的。這裡透過一個例子簡單比較一下。

這篇文章討論影響資料泵匯入效能的最大因素。

10g資料泵和匯入匯出效能對比(一):http://yangtingkun.itpub.net/post/468/321482

10g資料泵和匯入匯出效能對比(二):http://yangtingkun.itpub.net/post/468/323899

10g資料泵和匯入匯出效能對比(三):http://yangtingkun.itpub.net/post/468/328465

10g資料泵和匯入匯出效能對比(四):http://yangtingkun.itpub.net/post/468/457459

 

 

前面寫了幾篇文章,分別介紹EXP/IMPEXPDP/IMPDP的效能對比,根據前面幾篇文章的描述,如果不使用並行,似乎IMPDP的效率要比IMP沒有一個數量級的提示。對於當前的環境而言,事實確實如此。不過前面一直沒有描述一個重要的因素,當然的資料庫環境由於配置了STANDBY資料庫,因此不但處於歸檔模式,還設定了FORCE LOGGING

SQL> SELECT NAME, LOG_MODE, FORCE_LOGGING FROM V$DATABASE;

NAME      LOG_MODE     FOR
--------- ------------ ---
TESTRAC   ARCHIVELOG   YES

而資料泵的最大優勢莫過於直接路徑匯入,下面關閉FORCE LOGGING,並將資料庫至於非歸檔模式下,檢查資料泵匯入效率。

匯出操作:

bash-2.03$ expdp zhejiang/zhejiang directory=d_test dumpfile=zhejiang.dp

Export: Release 10.2.0.3.0 - 64bit Production on 星期一, 20 4, 2009 0:51:13

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/******** directory=d_test dumpfile=zhejiang.dp
正在使用 BLOCKS 方法進行估計...
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 22.64 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/TRIGGER
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. .
匯出了 "ZHEJIANG"."ORD_HIT_COMM"                   3.255 GB 4176146
. .
匯出了 "ZHEJIANG"."ORD_ORDER_ITEM"                 1.890 GB 3226647
.
.
.
. .
匯出了 "ZHEJIANG"."UNC_USER_NON"                       0 KB       0
. .
匯出了 "ZHEJIANG"."USR_USER_PLAT_ROLE"                 0 KB       0
已成功載入/解除安裝了主表 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
ZHEJIANG.SYS_EXPORT_SCHEMA_01
的轉儲檔案集為:
  /data1/backup/zhejiang.dp
作業 "ZHEJIANG"."SYS_EXPORT_SCHEMA_01" 已於 01:04:48 成功完成

匯出用時1335秒。

下面刪除浙江使用者,重啟資料庫,並將資料庫至於非歸檔模式,同時去掉資料庫的FORCE LOGGING設定:

SQL> DROP USER ZHEJIANG CASCADE;

使用者已刪除。

SQL> EXIT
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
斷開
bash-2.03$ srvctl stop db -d testrac
bash-2.03$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期一 4 20 01:20:39 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

已連線到空閒例程。

SQL> startup mount
ORACLE
例程已經啟動。

Total System Global Area 2147483648 bytes
Fixed Size                  2031480 bytes
Variable Size             469762184 bytes
Database Buffers         1660944384 bytes
Redo Buffers               14745600 bytes
資料庫裝載完畢。
SQL> alter database noarchivelog;

資料庫已更改。

SQL> alter database no force logging;

資料庫已更改。

SQL> alter database open;

資料庫已更改。

建立浙江使用者並授權:

SQL> create user zhejiang identified by zhejiang default tablespace zhejiang;

使用者已建立。

SQL> grant connect, resource to zhejiang;

授權成功。

SQL> grant create database link, create synonym, create view to zhejiang;

授權成功。

SQL> grant read, write on directory d_test to zhejiang;

授權成功。

執行匯入操作:

bash-2.03$ impdp zhejiang/zhejiang DUMPFILE=zhejiang.dp DIRECTORY=d_test FULL=y LOGFILE=zhejiang.log

Import: Release 10.2.0.3.0 - 64bit Production on 星期一, 20 4, 2009 1:40:01

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_IMPORT_FULL_01"
啟動 "ZHEJIANG"."SYS_IMPORT_FULL_01":  zhejiang/******** DUMPFILE=zhejiang.dp DIRECTORY=d_test FULL=y LOGFILE=zhejiang.log
處理物件型別 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/TABLE_DATA
. .
匯入了 "ZHEJIANG"."ORD_HIT_COMM"                   3.255 GB 4176146
. .
匯入了 "ZHEJIANG"."ORD_ORDER_ITEM"                 1.890 GB 3226647
.
.
.
. .
匯入了 "ZHEJIANG"."UNC_USER_NON"                       0 KB       0
. .
匯入了 "ZHEJIANG"."USR_USER_PLAT_ROLE"                 0 KB       0
處理物件型別 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/TYPE/TYPE_BODY
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/TRIGGER
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
作業 "ZHEJIANG"."SYS_IMPORT_FULL_01" 已經完成, 但是有 34 個錯誤 ( 04:02:13 完成)

匯入用時2小時2212秒。可以看到,這次根本沒有使用任何的並行設定,就將匯入時間縮短了46分鐘。

這說明資料泵匯入與傳統匯入相比,最大的效能優勢在於可以利用直接路徑的方式進行匯入。如果要進行大批次的資料泵匯入,可以考慮先將資料庫置於NOARCHIVELOG模式,等到匯入結束後,再修改為ARCHIVELOG模式。

 

 

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

相關文章