现在的位置: 首页 > 综合 > 正文

Data Pump Import速度问题之解决过程

2014年08月01日 ⁄ 综合 ⁄ 共 829字 ⁄ 字号 评论关闭

平台:HP安腾2
操作系统:Redhat Enterprise Linux 4
数据库版本:Oracle 10.2.0.2
架构:6节点RAC

问题现象:
用数据泵方法导出一个表的两个分区数据很快,而导入却很慢

数据:
用数据泵导出,速度为29万条/秒(37MB/秒)
用数据泵导入,速度为300条/秒(39KB/秒)

解决过程:
        开始没有看到环境,个人猜测也许是6节点的RAC在数据导入的时候同步Buffer Cache导致速度变慢,也许将涉及到Oracle本身的bug,所以建议用户可以先在单节点的同样环境中作一次测试,但是客户暂时没有单节点的环境。
      于是在同样的6节点RAC环境中再作一个Data Pump导入,期间检查V$SESSION_WAIT,多次执行,发现确实有gc相关的等待事件,但是并不明显,然后查看V$ACTIVE_SESSION_HISTORY,用下面的SQL:

[php]
select sum(time_waited), event
from v$active_session_history
where session_id = 501
group by event
order by 1 desc;
'[/php]

       此时问题很明显的暴露出来了,大量的时间耗费在log file switch completion和log file switch (checkpoint incomplete)这两个事件上,于是查看数据库的redo logfile大小,发现只有50M。由于客户的数据库运行在非归档模式上,所以直接将redo文件加大到1G,再次测试,速度超乎想像。客户很爽,我也很爽。

结论:
1。在没有V$ACTIVE_SESSION_HISTORY的10g以前版本中,不要奢望能通过频繁查询V$SESSION_WAIT来定位问题。
2。Oracle的bug虽然不少,但是也没有想象中那么多。

转载自:http://www.itpub.net/thread-684250-1-1.html

抱歉!评论已关闭.