2010-08-06 20:53
关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!
由于准备做一个120G左右的数据库的数据迁移,使用EXPDP和impdp做了一系列的测试
导出环境 4CPU AIX P4 -750M 16G 内存
导入环境 4CPU AIX P6-4G 32G 内存 4CPU可以虚拟出16个线程来,可以看到16个虚拟的CPU
存储都是一样的DS4300 24块146G 15K ,都是使用裸设备,单机导入
导出测试
导出脚本,只修改PARALLEL=3的数字,导入相同
nohup expdp system/manager schemas=kdjm DIRECTORY=DUMP_FILES PARALLEL=3 dumpfile=KDJM2008-11-28_%U.dmp logfile=nnsiexp2008_12_28.log&
导出时间成绩
1个并行文件 1:05
2个并行 0:56:36
3个并行 0:30:41
4个并行 0:51
6个并行 1:21
注意到没有,不是什么数量的并行值都能快速的导出,期间使用sar -ud 5 1000,监控磁盘I/O情况,发现在最快的3个管道的时侯I/O等待为40-50,1个管道的时侯I/O等待只有5-10个,6个管道的时侯是70-80的I/O等待,因此我认为无论是那种平台导出要想更快,一定要压榨I/O的能力,尽量使i/o等待在30-50之间,太多了I/O能力反而可能下降,看来在这个平台上,3个管道是最好的呵呵,导出时的PARALLEL应该是指生成的数据文件过程的I/O进程数,如果指定了%U参数,也将是文件数。
导入时间:
导入脚本
nohup impdp system/manager schemas=kdjm DIRECTORY=DUMP_FILES PARALLEL=12 dumpfile=KDMJ2008-12-11_%U.dmp logfile=KDMJ2008-12-11.log&
导入时ORACLE参数配置,导出时好像配啥参数都没有效果呵呵
alter system set db_file_multiblock_read_count=256 scope=spfile;
alter system set pga_aggregate_target=4G scope=spfile;
alter system set shared_pool_size=4G scope=spfile;
alter system set db_cache_size=18G scope=spfile;
alter system set sga_max_size=24G scope=spfile;
alter system set sga_target=24G scope=spfile;
alter system set processes=400 scope=spfile;
排序区=1.5G
alter system set sort_area_size=1610612736 scope=spfile;
导入耗时成绩
1个并行,1个导入文件 11:27:21
4个并行,4个导入文件6:12:32
8个并行,4个导入文件4:42:45
12个并行,3个导入文件3:42:27
14个并行,3个导入文件4:40:13
16个并行,2个导入文件4:39:07
看到没有,导入选择合理的参数,从11个多小时降到3小时多一点,差异非常巨大,这样的差距,尽量在导入的时侯压榨I/O的压力,是说不通的。事实上到了导入后半程,SAR监控到的I/O压力并不大,是什么影响了导入的速度?我看到一个出错的语句帮助我解开了这个秘密,这个出错的语句是创建索引的语句
这是出错的语句,应该是开发错误地将创建索引的表空间指到了SYSAUX,从而导致出错了,注意最后的PARALLEL 8
ORA-31685: Object type INDEX:"DBSNMP"."DK_WERR" failed due to insufficient privileges. Failing sql is:
CREATE INDEX "DBSNMP"."DK_WERR" ON "KDMJ"."DK_WERR" ("SCY", "AWERR") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSAUX"
PARALLEL 8
这个出错,让我们知道导入时指定PARALLEL值实际是用在创建索引的并行度上的,所以导入的时侯选择较高的并行度是可以大幅度提高创建索引的速度,从而加快了导入的速度。其实从导入数据来看,无论你选择多少个并行值,都是在1个小时左右数据就全部导入了,这时查询数据能查询到,但是没有索引,无论那种导入方式浪费时间,最多都是创建索引的时间,我们修改创建索引的并行度,使创建索引的速度大大增加了,当然增加到更多的值,会产生的I/O和锁之类的竞争,从而导致速度下降了,我们看到14个并行值和16个并行值还不如12个的,另外要特别指出一点,导入的时侯PARALLEL值和导出时的PARALLEL值可以完全不同的,估计好多人和我以前的理解一样,认为导入导出的数量要严格相等的,但是手册推荐导入数量要等于导出的数量罢了。
如果要给导入一个合理的PARALLEL值,通过测试,我认为是可用的CPU数(不管你是虚拟的还是多核的)的60-70%左右的值是一个比较好的值。当然如果有可能还是测试一下来决定一个最优的值吧。
分享到:
相关推荐
Oracle_expdp_impdp用法详解
Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
指定转储文件和日志文件所在的目录 DIRECTORY=directory_object Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录
oralce详细导入导出参数解释,详细解释了与imp,exp的区别
详细介绍oracle11g expdp impdp导入导出的使用
oracle的impdp和expdp数据泵导入导出全备数据库-详细笔记文档总结
账单中心数据泵expdp和impdp异机导入导出工作案例
NULL 博文链接:https://zzzwp.iteye.com/blog/2313486
oracle expdp impdp 分区表重映射导出导入 数据迁移方案,以SI01用户为例子,将用户分区表导出后,将分区表重映射到新的表空间,完成数据迁移和检查。照方案例子按步去做,一定能成功。
在需要导出的数据库执行: 1. 检查Oracle实例状态 ,sid SQL< select instance_name,host_name,startup_time,status,database_status from v$instance; 2.查看用户和默认表空间的关系。select ...
EXPDP和IMPDP的比较详细使用说明
expdp/impdp和exp/imp的区别 exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。 expdp和impdp是服务端的工具程序,他们只能在Oracle服务端使用,不能在客户端使用。 imp只适用于exp导出的...
ORACLE expdp-impdp使用。ORACLE expdp-impdp使用ORACLE expdp-impdp使用
Centos7.6下oracle impdp导入和expdp导出,
expdp\expdp_impdp.pdf
在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项; EXP和IMP是客户段工具程序,它们既可以在...
expdp,impdp常用方法.pdf
oracle expdp-impdp_用法详解
Oracle expdp impdp 使用 详解