Oracle如何提高或加速数据泵(expdp和impdp)的操作性能

0    530    2

Tags:

👉 本文共约4368个字,系统预计阅读时间或需17分钟。

影响DataPump相关的DataPump参数

当执行datapump导出和导入时都想尽一切办法来提高性能,这里介绍一些可以显著提高DataPump性能的相关DataPump与数据库参数

access_method

在某些情况下由Data Pump API所选择的方法不能快速的访问你的数据集。在这种情况下除了显式地设置该参数来测试每一种访问方法之外你是无法知道那种访问方法更高效的。该参数有两种选项direct_path与external_table

cluster=n

在RAC环境中可以显著提供高Data Pump API基本操作的速度。注意这个参数只对Data Pump API操作起作用,在RAC环境中,建议将该参数设置为n。而如果将parallel_force_local设置为true所带来的影响不仅仅只针对Data Pump API操作

data_options=disable_append_hint

它只是impdp参数,在非常特殊的情况下,可以安全的使用并且可能减少导入数据的时间。只有满足以下所有条件时才使用data_options=disable_append_hint参数。
1.导入操作将向已经存在的表,分区或子分区导入数据
2.将被导入的已经存在的对象数非常少(比如是10或者更小)
3.当执行导入操作时其它会话对于这些被导入的对象只执行select语句。
data_options=disable_append_hint参数只有在11.2.0.1与更高版本中才可以使用。只有在要锁定由其它会话所释放对象花费很长时间的情况下使用data_option=disable_append_hint才能节省时间。

estimate

estimate参数有两个相互排斥的选项,一个是blocks,另一个是statistics.在执行导出操作时使用blocks方法来评估数据集大小比使用statistics方法消耗的时间更长。但是使用blocks方法评估的数据集大小要比使用statistics方法评估的数据集大小要精确些。如果导出文件的评估大小不是最主要关注的事,建议使用estimate=statistics。

exclude=comment

在某些情况下,终端用户不需要列和对象类型对应的注释,如果忽略这些数据,DataPump操作将会减少执行时间。

exclude=statistics

如果不需要使用排斥的include参数,那么排除和导出统计信息将会缩短整个导出操作的时间。dbms_stats.gather_database_stats过程将在数据导入到目标数据库后来生成统计信息。DataPump操作当由DataPump引擎和任何其它的RDBMS会话并行执行对小表生成统计信息时可能会hang且无限期。对于运行时间超过1小时或更长时间的DataPump操作,可以考虑禁用数据库的自动统计信息收集任务为了临时禁用11g的自动统计信息收集任务因此DataPump操作不会与该任务产生竞争,以sys用户执行以下命令:
exec dbms_auto_task_admin.diable(client_name=>'auto optimizer stats collection',
operation=>null,window_name=>null);
在DataPump操作完成之后重新启动统计信息收集任务:
exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL);

为了临时禁用10g的自动统计信息收集任务因此DataPump操作不会与该任务产生竞争,以sys用户执行以下命令:
exec sys.dbms_scheduler.disable ('GATHER_STATS_JOB');
在DataPump操作完成之后重新启动统计信息收集任务:
exec sys.dbms_scheduler.enable ('GATHER_STATS_JOB');

network_link

使用这个参数将会有效限制DataPump API的并行度,除非你的网络吞吐量和网络带宽比本地设备更好,使用network_link将会比使用导出文件慢很多。对于DataPump API性能来说,因为它倾向于比dump文件操作要慢很多,只建议network_link作为最后一招来使用。可以考虑使用移动或共享设备来存储dump文件来代替network_link来执行数据的迁移。

parallel

如果有多个CPU使用并且没有使用CPU绑定或磁盘I/O绑定或内存绑定且在dumpfile参数中没有使用多个dump文件,那么并行执行将会对性能产生正面影响。如果parallel参数设置为N,N>1,那么为了更好的使用并行执行建议dumpfile参数应该设置为不比parallel参数小。

需要注意的是,parallel参数是DataPump API可以使用的并发Data Pump工作进程的上限,但DataPump API可能使用的DataPump工作进程数要比这个参数指定的少,依赖于主机环境中的瓶颈,parallel参数指定的值小于可用CPU个数时Data Pump API基本操作可能会更快。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
Oracle如何提高或加速数据泵(expdp和impdp)的操作性能后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部