最近一直在给客户部署OGG,客户的一个应用数据库使用了VPD加密数据,而且源端和目标端的表结构不一致,这样传统的EXP/EXPDP无法满足数据初始化,于是我使用了外部表来初始化数据,在默认模式下,经过测试,外部表每秒可以卸载1G的数据,本文主要对比并行模式下,外部表的卸载效率。
以下是测试表实验表,大小约2G。
SQL> select bytes/1024/1024/1024 from dba_segments where segment_name='HIS_R_MID_TABLE' and owner='EPM_HIS';
BYTES/1024/1024/1024
--------------------
19.3974609
在不开并行的时候,需要18秒可以卸载完成。
SQL> create table HIS_R_MID_TABLE_unload
2 organization external
3 (type oracle_datapump
4 default directory backup
5 location('HIS_R_MID_TABLE.dmp'))
6 as select * from EPM_HIS.HIS_R_MID_TABLE;
Table created.
Elapsed: 00:18:41.50
使用4个并行,只需要4秒就可卸载完数据。
SQL> drop table HIS_R_MID_TABLE_unload purge;
Table dropped.
Elapsed: 00:00:00.20
SQL> create table HIS_R_MID_TABLE_unload
2 organization external
3 (type oracle_datapump
4 default directory backup
5 location('HIS_R_MID_TABLE_1.dmp','HIS_R_MID_TABLE_2.dmp','HIS_R_MID_TABLE_3.dmp','HIS_R_MID_TABLE_4.dmp'))
6 parallel 4
7 as select * from EPM_HIS.HIS_R_MID_TABLE;
Table created.
Elapsed: 00:04:03.95
在开4个并行的时候,磁盘I/O刚好达到极限,经多次测试,在4个并行的时候,客户的环境卸载速率最快。