
aix oracle 12.1.0.2 expdp评估8G,实际导出200M,耗时7小时,很慢,经过调整后,只需6分钟。
处理思路:
先查等待事件,再查mos
以下是expdp logtime = all命令的示例症状。 (logtime 参数在 12.1 及以上版本可用)
导出空分区表需要0-3秒才能导出每个分区,而正常时通常需要不到一秒的时间。
在Auto SGA环境(设置了sga_target或memory_target)下,当 buffer cache 负载较高并且 streams pool 中的内存正被移动到 buffer cache 时,可能会发生此问题。
如果遇到类似的性能问题时,请检查以下查询是否一直返回“1”。该值表示 streams pool 处于收缩阶段。当 streams pool 完成收缩时,该值应返回“0”,但如果它一直返回“1”,则您可能遇到此问题。
SHRINK_PHASE_KNLASG
-------------------
1
原因是
即使 streams pool 已经结束收缩,该标志也没有被修改,这导致各种 stream pool 操作(例如数据泵的内部操作)等待 "StreamsAQ: enqueue blocked on low memory"。
该问题是由于Bug 27634991引起的,在版本19.1及更高版本中修复了该问题。
解决:
如果由于“StreamsAQ: enqueue blocked on low memory”等待事件导致expdp impdp命令出现严重性能问题,并且X$KNLASG.SHRINK_PHASE_KNLASG 列保持返回1并持续几分钟,则从sqlplus运行以下命令强制streams pool缩小完成。
connect as sysdba
alter system set events 'immediate trace name mman_create_def_request level 6';
可以应用Patch 27634991以防止发生此问题。
详情请阅读原文




