暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

统计信息 STREAMS AQ: WAITING FOR MESSAGES IN THE QUEUE

原创 黑獭 2024-06-17
268

描述:数据库xtts迁移后,通过该命令EXEC DBMS_STATS.gather_database_stats(degree => 16);收集全库的统计信息,执行上之后就没再看,但是到了第二天
发现数据库的相关收集作业还在执行,比较奇怪。
然后,查询了数据库的相关阻塞和阻塞进程的相关event发现了一个比较奇怪的阻塞。streams aq: waiting for messages in the queue
后续手动测试发现只收集一个表的统计信息也是很慢,然后我杀掉了阻塞的会话,不开并行收集,能很快收集完毕。
怀疑碰到了bug
检查mos上的相关bug和文档发现如下资料:

Bug 33764919 - stats collection stuck on 'streams aq: waiting for messages in the queue' (Doc ID 33764919.8)
Concurrent DBMS_STATS Is Hanged By 'Streams AQ: waiting for messages in the queue' (Doc ID 2727024.1)
Bug 32114729 : CONCURRENT DBMS_STATS IS HANGGED BY 'STREAMS AQ: WAITING FOR MESSAGES IN THE QUEUE'
解决办法:
exec dbms_stats.set_global_prefs('CONCURRENT','FALSE');

#######################################################################################################################
Version 19.3.0.0.0 and later

DBMS_STATS is hanged if current_user is changed before executing DBMS_STATS.

ex)
connect /as sysdba
alter session set current_schema=<USER>;
BEGIN DBMS_STATS.GATHER_TABLE_STATS(
      ownname => '<USER>',
      tabname => '<TABLE>',
      estimate_percent => '10',
      granularity => 'AUTO',
      cascade => TRUE,
      force => TRUE  );
END; 

 

A preference CONCURRENT is ALL and the concurrent stats is enabled.


SQL> select DBMS_STATS.GET_PREFS('CONCURRENT') from dual;

DBMS_STATS.GET_PREFS('CONCURRENT')
--------------------------------------------------------------------------------
ALL

 

When the issue is occurring, a session is waiting for 'Streams AQ: waiting for messages in the queue'.

WAIT #140497090265352: nam='Streams AQ: waiting for messages in the queue'



Workaround
Disable concurrent stats gathering.
  
exec dbms_stats.set_global_prefs('CONCURRENT','FALSE')








「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论