Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3672839
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2021-01-27 18:42:55


aix oracle 12.1.0.2 expdp评估8G,实际导出200M,耗时7小时,很慢。

处理思路:
先查等待事件,发现StreamsAQ: enqueue blocked on low memory事件,
查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”,则您可能遇到此问题。

SQL> select shrink_phase_knlasg from X$KNLASG;

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以防止发生此问题。


如果您的问题不只是性能变差,而是在 "StreamsAQ: enqueue blocked on low memory" 等待中hang或spin,则可能是以下错误之一所引起。

 Session hangs on "Streams AQ: enqueue blocked on low memory"
 High CPU usage for Background q0 processes with fix for bug 21286665


设置events后,6分钟导出完。



97k的一个小补丁

参考:
由于频繁等待 ”Streams AQ: Enqueue Blocked On Low Memory" 而导致Datapump Expdp或Impdp变慢 (Doc ID 2469587.1)
阅读(1725) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~