oracle数据泵压缩比例,oracle技术之oracle数据泵不同工作方式性能比较(四)

根据Oracle的文档的描述,数据泵采用不同的方式导出导入,性能也会有明显的差别,这次正好有机会测试一下,迁移表空间、直接路径、外部表方式,以及数据库链方式导出、导入的性能差异。

这篇测试外部表导出、导入方式。

首先清除上一篇文章中导入的用户和表空间,并重新建立测试用户和表空间。

SQL> DROP USER TJSQ_NDMAIN CASCADE;

User dropped.

SQL> DROP USER TJSQ_TRADE CASCADE;

User dropped.

SQL> DROP USER TJSQ_GOV CASCADE;

User dropped.

SQL> DROP USER TJSQ_NDMAIN_OPER CASCADE;

User dropped.

SQL> DROP USER TJSQ_TRADE_OPER CASCADE;

User dropped.

SQL> DROP TABLESPACE TJSQ INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

SQL> DROP TABLESPACE TJSQ_TMP INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

下面重新创建用户,并设置权限:

SQL> CREATE USER TJSQ_NDMAIN IDENTIFIED BY TJSQ_NDMAIN;

User created.

SQL> CREATE USER TJSQ_TRADE IDENTIFIED BY TJSQ_TRADE;

User created.

SQL> CREATE USER TJSQ_GOV IDENTIFIED BY TJSQ_GOV;

User created.

SQL> CREATE USER TJSQ_NDMAIN_OPER IDENTIFIED BY TJSQ_NDMAIN_OPER;

User created.

SQL> CREATE USER TJSQ_TRADE_OPER IDENTIFIED BY TJSQ_TRADE_OPER;

User created.

SQL> GRANT CONNECT TO TJSQ_GOV;

Grant succeeded.

SQL> GRANT RESOURCE TO TJSQ_GOV;

Grant succeeded.

SQL> GRANT CONNECT TO TJSQ_NDMAIN;

Grant succeeded.

SQL> GRANT RESOURCE TO TJSQ_NDMAIN;

Grant succeeded.

SQL> GRANT CONNECT TO TJSQ_NDMAIN_OPER;

Grant succeeded.

SQL> GRANT RESOURCE TO TJSQ_NDMAIN_OPER;

Grant succeeded.

SQL> GRANT CONNECT TO TJSQ_TRADE;

Grant succeeded.

SQL> GRANT RESOURCE TO TJSQ_TRADE;

Grant succeeded.

SQL> GRANT CONNECT TO TJSQ_TRADE_OPER;

Grant succeeded.

SQL> GRANT RESOURCE TO TJSQ_TRADE_OPER;

Grant succeeded.

SQL> GRANT CREATE SYNONYM TO TJSQ_GOV;

Grant succeeded.

SQL> GRANT CREATE SYNONYM TO TJSQ_NDMAIN;

Grant succeeded.

SQL> GRANT CREATE SYNONYM TO TJSQ_NDMAIN_OPER;

Grant succeeded.

SQL> GRANT CREATE DATABASE LINK TO TJSQ_TRADE;

Grant succeeded.

SQL> GRANT CREATE SYNONYM TO TJSQ_TRADE;

Grant succeeded.

SQL> GRANT CREATE SYNONYM TO TJSQ_TRADE_OPER;

Grant succeeded.

表空间的建立以及数据文件初始化的时间需要单独计时:

SQL> SET TIMING ON

SQL> CREATE TABLESPACE TJSQ DATAFILE '/data/oracle/oradata/tjsq/tjsq01.dbf' size20g,

2  '/data/oracle/oradata/tjsq/tjsq02.dbf' size4g;

Tablespace created.

Elapsed: 00:02:07.68

SQL> CREATE TABLESPACE TJSQ_TMP DATAFILE '/data/oracle/oradata/tjsq/tjsq_tmp.dbf' size4g;

Tablespace created.

Elapsed: 00:00:22.19

这个步骤总用时2分30秒。

显然执行外部表方式的导出,由于Oracle默认采用直接路径的方式,因此要改变这种默认的设置,就必须做一些改动。

对于导出而言,如果需要外部表方式对所有的表都适用,最好的方法就是使用QUERY方式导出,加上一个恒等的导出条件,将使得导出不在使用直接路径方式:

[oracle@yans2 ~]$ expdp system directory=d_dmpdp dumpfile=tjsq_external.dp schemas=tjsq_trade,tjsq_ndmain,tjsq_gov,tjsq_ndmain_oper,tjsq_trade_oper query=\"where 1=1\"

Export: Release10.2.0.3.0 - 64bit Production on Thursday, 18 June, 2009 15:59:13

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Password:

Connected to: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/******** directory=d_dmpdp dumpfile=tjsq_external.dp schemas=tjsq_trade,tjsq_ndmain,tjsq_gov,tjsq_ndmain_oper,tjsq_trade_oper query="where 1=1"

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 9.230 GB

Processing object type SCHEMA_EXPORT/USER

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT

Processing object type SCHEMA_EXPORT/ROLE_GRANT

Processing object type SCHEMA_EXPORT/DEFAULT_ROLE

Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/SYNONYM/SYNONYM

Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE

Processing object type SCHEMA_EXPORT/SEQUENCE/GRANT/OWNER_GRANT/OBJECT_GRANT

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/COMMENT

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION

Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION

Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/POST_TABLE_ACTION

Processing object type SCHEMA_EXPORT/TABLE/MATERIALIZED_VIEW_LOG

. . exported "TJSQ_TRADE"."ORD_HIT_COMM"                 1.180 GB 1508527 rows

. . exported "TJSQ_TRADE"."CON_ITEM_SEND_IND"            829.2 MB 6212238 rows

. . exported "TJSQ_NDMAIN"."PLT_ORG_PLAT"                87.76 KB    1383 rows

.

.

.

. . exported "TJSQ_TRADE_OPER"."WYP_DISABLE_DUP"             0 KB       0 rows

. . exported "TJSQ_TRADE_OPER"."WYP_DISABLE_HEPING14"        0 KB       0 rows

Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

******************************************************************************

Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:

/data/dmp/tjsq_external.dp

Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 16:06:38

利用外部表方式导出用了7分25秒。

下面使用DBMS_FILE_TRANSFER包进行文件传送:

SQL> SET TIMING ON

SQL> EXEC DBMS_FILE_TRANSFER.GET_FILE('D_DMPDP', 'tjsq_external.dp', 'NEWDEMO', 'D_DMP', 'tjsq_external.dp')

PL/SQL procedure successfully completed.

Elapsed: 00:10:22.82

文件传送用了10分23秒。

利用数据泵执行导入,同样的原因,为了使得每张表都使用外部表方式导入数据,这里添加了QUERY语句,在QUERY语句中加上一个恒等的条件。

[oracle@tj ~]$ impdp system dumpfile=tjsq_external.dp directory=d_dmp logfile=tjsq_imp_external.log query=\"where 1=1\"

Import: Release10.2.0.3.0 - 64bit Production on星期五, 19 6月, 2009 9:44:04

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Password:

Connected to: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded

Starting "SYSTEM"."SYS_IMPORT_FULL_01":  system/******** dumpfile=tjsq_external.dp directory=d_dmp logfile=tjsq_imp_external.log query="where 1=1"

Processing object type SCHEMA_EXPORT/USER

ORA-31684: Object type USER:"TJSQ_TRADE_OPER" already exists

ORA-31684: Object type USER:"TJSQ_NDMAIN_OPER" already exists

ORA-31684: Object type USER:"TJSQ_GOV" already exists

ORA-31684: Object type USER:"TJSQ_NDMAIN" already exists

ORA-31684: Object type USER:"TJSQ_TRADE" already exists

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT

Processing object type SCHEMA_EXPORT/ROLE_GRANT

Processing object type SCHEMA_EXPORT/DEFAULT_ROLE

Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/SYNONYM/SYNONYM

Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE

Processing object type SCHEMA_EXPORT/SEQUENCE/GRANT/OWNER_GRANT/OBJECT_GRANT

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

. . imported "TJSQ_TRADE"."ORD_HIT_COMM"                 1.180 GB 1508527 rows

. . imported "TJSQ_TRADE"."CON_ITEM_SEND_IND"            829.2 MB 6212238 rows

. . imported "TJSQ_NDMAIN"."PLT_ORG_PLAT"                87.76 KB    1383 rows

.

.

.

. . imported "TJSQ_TRADE_OPER"."WYP_DISABLE_DUP"             0 KB       0 rows

. . imported "TJSQ_TRADE_OPER"."WYP_DISABLE_HEPING14"        0 KB       0 rows

Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/COMMENT

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION

Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION

Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/POST_TABLE_ACTION

Processing object type SCHEMA_EXPORT/TABLE/MATERIALIZED_VIEW_LOG

Job "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at 09:59:56

导入执行了15分52秒。

现在将执行结果插入到记录表中:

SQL> INSERT INTO T_EXPDP_IMPDP_RECORD VALUES

2  ('EXTERNAL_TABLE', 7*60+25, 623, 15*60+52, 150, 7*60+25+623+15*60+52+150);

1 row created.

SQL> COMMIT;

Commit complete.

SQL> SELECT * FROM T_EXPDP_IMPDP_RECORD

2  WHERE TYPE = 'EXTERNAL_TABLE';

TYPE                 EXPDP_TIME TRANS_TIME IMPDP_TIME OTHER_TIME TOTAL_TIME

-------------------- ---------- ---------- ---------- ---------- ----------

EXTERNAL_TABLE              445        623        952        150       2170

SQL> SELECT ROUND(EXPDP_TIME/TOTAL_TIME*100, 2) EXPDP_RATE,

2  ROUND(TRANS_TIME/TOTAL_TIME*100, 2) TRANS_RATE,

3  ROUND(IMPDP_TIME/TOTAL_TIME*100, 2) IMPDP_RATE,

4  ROUND(OTHER_TIME/TOTAL_TIME*100, 2) OTHER_RATE

5  FROM T_EXPDP_IMPDP_RECORD

6  WHERE TYPE = 'EXTERNAL_TABLE';

EXPDP_RATE TRANS_RATE IMPDP_RATE OTHER_RATE

---------- ---------- ---------- ----------

20.51      28.71      43.87       6.91

可以看到,外部表方式的导出和导入速度都要比直接路径慢,而且导出操作尤为明显,不过可以确认的是,性能下降和两方面因素有关,一个是外部表方式确实效率低于直接路径方式,另一个是为了数据泵采用外部表方式而引入的QUERY语句,也会带来一定的性能代价。

和其他导入导出方式相比,外部表方式在导出、传送、导入三方面耗时相对来说比较平均。导出占20.5%,传送占了28.7%,而导入最长用了43.87。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值