描述:数据库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')
相关推荐
(图片来源网络,侵删) 前言 作为一款基于Linux的操作系统,统信uos系统提供了丰富的字体选择,以满足用户的个性化需求。本文将介绍统信uos系统字体安装包的获取方式以及如何安装字体。 统信uos系统字体安装包的获取方式 统信uos系统字体安装包可以通过以下方式获取: (图片来源网络,侵删) 1. 官方网站:您可以登录统信uos系统的官方网站,在下载页面中找到字体安装包的下载链接。根据您的系统版
Win10运行powershell报错“无法加载xxx.ps1,因为在此系统上禁止运行脚本”怎么办?许多用户在使用电脑的时候偶尔会需要使用到Powershell,而最近有许多小伙伴反应自己无法运行并且遇到上面的问题,这要怎么办呢?下面小编就带着大家看看吧! 操作方法: 进入目录C:WindowsSystem32WindowsPowerShellv1.0,找到powershell.exe
(图片来源网络,侵删) Ubuntu是一个基于Linux的操作系统,它支持多种编程语言,包括C、C++、Java、Python等等。对于想要在Ubuntu中进行编程的开发者来说,if语句是必不可少的一部分。在Ubuntu中是否可以使用if语句呢? 答案是肯定的。Ubuntu中完全可以使用if语句,而且和其他Linux系统一样,if语句的使用方法也是相同的。if语句是编程语言中的条件语句,它可以根据
缓存是程序优化的重要手段之一,可以加速程序的运行速度。在许多Web应用程序中,缓存还可以减轻数据库负载。ThinkPHP6是一款强大的PHP框架,其中的缓存驱动模式可以让我们方便地实现缓存功能。本文将介绍如何使用ThinkPHP6的缓存驱动模式。 配置缓存驱动 在ThinkPHP6中,我们可以使用多种缓存驱动,例如:文件驱动、Memcache驱动、Redis驱动等。在config/cache.ph
MySQL是当今世界上最流行的关系型数据库管理系统之一。在日常开发中,我们经常需要将数据按照一定的规则进行筛选和排序,例如按照姓名升序排列。此外,对于需要统计年龄的应用场景,我们也可以利用MySQL的强大功能轻松实现。 首先,我们需要有一张包含人员信息的表。假设这张表名为“person”,包含以下几个字段: CREATE TABLE person ( id INT PRIMARY KEY, nam
回到顶部