描述:数据库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')
相关推荐
Oracle和DB2是两个知名的关系型数据库管理系统(RDBMS),在企业级应用中被广泛使用。在本文中,我们将对Oracle和DB2这两种数据库技术进行比较并进行详细解析,包括其特点、性能、功能和使用示例等方面的分析。 一、Oracle数据库技术概述 Oracle是由美国甲骨文公司开发的一种关系型数据库管理系统。它被广泛应用于企业级应用中,具有强大的性能、稳定性和安全性。Oracle提供了丰富的功
1、查找以前是否装有mysql 命令: rpm -qa|grep -i mysql 可以看到mysql的两个包: mysql-*..*.RHEL**mysqlclient*.RHEL** 2、删除mysql 删除命令: rpm -e --nodeps 包名 ( rpm -ev mysql-*.RHEL* ) 3、删除老版本mysq 1、查找以前是否装有mysql 命令:rpm -qa|grep -
具有弱密码的公开暴露的 PostgreSQL 和 MySQL 数据库正在被恶意勒索机器人自动清除——该机器人会标记谁付款,谁没有取回他们的数据。 据 Border0 的安全研究人员称,该机器人的来源不明,通常会在暴露于互联网后的数小时内破坏保护不力的数据库。 在涉及在 VM 上运行 PostgreSQL 服务器的重复实验中,同时使用弱凭据(用户:postgres,密码:密码),机器人每天多次成功破
当感觉mysql性能出现问题时,通常会先看下当前mysql的执行状态,使用 show processlist 来查看,例如: 其中state状态列信息非常重要,先看下各列含义,然后看下state常用状态 各列的含义 当感觉mysql性能出现问题时,通常会先看下当前mysql的执行状态,使用 show processlist 来查看,例如: 其中state状态列信息非常重要,先看下各列含义,然后看下
MSSQL主从数据库设置是一种数据库结构,它可以在多个服务器之间共享数据库的内容,获得更高的弹性和可用性。这种架构在解决可用性方面很有帮助,当您的主服务器无法工作时,它可以让您的同步副本接管活动,以实现高可用性。 MSSQL主从数据库设置使用复制(replication),而复制是一种常见的数据并行技术,可将一个服务器上的数据复制到多个服务器上,以实现多服务器共享一份数据。 如果您的主服务器中的任
回到顶部