描述:数据库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=;
BEGIN DBMS_STATS.GATHER_TABLE_STATS(
ownname => '',
tabname => '
',
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')
相关推荐
MySQL批量插入问题 在开发项目时,因为有一些旧系统的基础数据需要提前导入,所以我在导入时做了批量导入操作 ,但是因为MySQL中的一次可接受的SQL语句大小受限制所以我每次批量虽然 MySQL批量插入问题 在开发项目时,因为有一些旧系统的基础数据需要提前导入,所以我在导入时做了批量导入操作 ,但是因为MySQL中的一次可接受的SQL语句大小受限制所以我每次批量虽然只有500条,但依然无法插入,
学习MySQL的数据一致性和延迟控制技巧有哪些? 在数据库系统中,数据一致性和延迟控制是非常重要的技术要点。MySQL作为一种常用的关系型数据库管理系统,也有相应的技巧来保证数据的一致性和控制延迟。本文将介绍MySQL中常用的数据一致性和延迟控制技巧,并给出相应的代码示例。 一、数据一致性技巧 事务隔离级别设置 事务隔离级别是MySQL中保证数据一致性的重要手段之一。MySQL支持四种事务隔离级别
SQL是目前使用最为广泛的数据库语言之一。这里,我总结了在数据库上,用SQL语言对数据排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容。 数据库相 SQL是目前使用最为广泛的数据库语言之一。这里,我总结了在数据库上,用SQL语言对数据排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容。 数据库相关 查所有数据库 show databases; 创建
MySQL和Oracle是当前市场上最受欢迎的两种关系型数据库。虽然两者都拥有很多的用户,但是它们在使用上有很多差异。本篇文章将结合实例,集中探讨MySQL和Oracle的优缺点。 1. 数据库扩展性 在扩展性方面,MySQL具有很大的灵活性。它支持分区表,并且可以进行水平或垂直共享。这意味着你可以将大表分解成多个小表,也可以将多台服务器上的数据合并到一个表中。 相比之下,Oracle通常被认为比
MySQL函数是MySQL数据库的重要组成部分,它为开发人员提供了丰富的功能和扩展性。通过编写MySQL函数,开发人员可以自定义函数、存储过程和触发器等数据库对象,以便更好地实现复杂的数据处理和管理。本文将介绍开发MySQL函数的基本知识和技巧,帮助开发人员快速上手。 首先,我们需要了解MySQL函数的基本语法。MySQL函数使用“CREATE FUNCTION”命令来定义,其基本语法如下所示:
回到顶部