描述:数据库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')
相关推荐
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句 Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。
在 MySQL 中,我们可以使用以下函数来计算日期 - CURDATE() 函数 - 基本上它返回计算机的当前日期。 YEAR() 函数 - 它返回指定日期的年份。 MONTH () 函数 - 返回指定日期的月份。 DAY() 函数 - 返回指定日期的日。 RIGHT() 函数 - 它返回给定日期以来函数中指定的字符数。表达式中比较 RIGHT() 函数返回值的部分计算结果为 1 或 0。 要理解
今天我们来谈一谈C语言和Oracle数据库的关系,C语言作为一种最常见的编程语言之一,其与Oracle数据库紧密相关。无论是应用程序还是操作系统都需要与数据库进行交互,C语言正好满足了这一需求。下面我们来看看具体的应用场景。 首先,C语言可以通过Oracle提供的ODBC接口来访问Oracle数据库。ODBC(Open Database Connectivity)是一种面向ODBC-complia
索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪 索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。 那么索引设计原则又是怎样的
1. 问题描述 用户在将 JDK 版本从 8 升级到 11 后,发现应用无法连接到 MySQL 数据库,出现连接超时或连接被拒绝的错误。 例如出现如下报错信息: 可能原因: JDBC驱动版本不兼容: 新的 JDK 11 可能需要使用更高版本的 MySQL JDBC 驱动。 SSL/TLS配置变更: JDK 11 的 SSL/TLS 配置可能与旧版本不同。 加密算法更新: JDK 11 可能不再支持
回到顶部