Data Pump Import速度问题

平台: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: select sum(time_waited), event from v$active_session_history where session_id = 501 group by event order by 1 desc; 此时问题很明显的暴露出来了,大量的时间耗费在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虽然不少,但是也没有想象中那么多。