监控发现sysaux表空间使用不断增加,导致表空间不足。
数据库版本:
select * from v$version;
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
复制
查看v$sysaux_occupants,发现SM/ADVISOR排在第一
select occupant_name,space_usage_kbytes from v$sysaux_occupants order by space_usage_kbytes desc;
SM/ADVISOR 32741952
复制
看dba_segments,发现WRI$_ADV_OBJECTS占用最大
select segment_name,owner,tablespace_name,bytes/1024/1024"SIZE(MB)",segment_type from dba_segments where tablespace_name='SYSAUX' order by bytes desc;
WRI$_ADV_OBJECTS SYS SYSAUX 14497 TABLE
WRI$_ADV_OBJECTS_IDX_01 SYS SYSAUX 6907 INDEX
WRI$_ADV_OBJECTS_IDX_02 SYS SYSAUX 5761 INDEX
WRI$_ADV_OBJECTS_PK SYS SYSAUX 4804 INDEX
复制
原因:
因为在12.2中,引入了新的特性:optimizer statistics advisor。优化器统计信息顾问每天都会在维护窗口运行,auto_stats_advisor_task多次运行,因而会消耗大量sysaux表空间。
select task_name,count(*) cnt from dba_advisor_objects group by task_name order by cnt desc;
TASK_NAME CNT
----------------------------------- ----------
AUTO_STATS_ADVISOR_TASK 127918465
SYS_AUTO_SPCADV205002227072021 50
复制
解决方案:
1、删除statistics advisor task(auto_stats_advisor_task),删除该任务后就可以释放统计信息顾问产生的数据
直接删除该任务:
declare
v_tname varchar2(32767);
begin
v_tname :='AUTO_STATS_ADVISOR_TASK';
dbms_stats.drop_advisor_task(v_tname);
end;
/
复制
在删除任务的过程中,可能会遇到下面的错误:
ORA-20001:Statistics Advisor: Invalid TaskName For thecurrent user
复制
如果遇到上面的错误,可以先重建AUTO_STATS_ADVISOR_TASK来解决问题:
SQL>connect as sysdba
SQL>EXEC DBMS_STATS.INIT_PACKAGE();
删除任务后,重新组织表和索引
alter table wri$_adv_objects move;
alter index wri$_adv_objects_idx_01 rebuild;
alter index wri$_adv_objects_idx_02 rebuild;
alter index wri$_adv_objects_pk rebuild;
复制
如果 WRI$_ADV_OBJECTS 记录过多,delete以上会占用较大undo,可以把想要的数据存储在临时表,truncate table WRI$_ADV_OBJECTS,再insert回来。
create table wri$_adv_objects_new tablespace ticket_data
as select * from wri$_adv_objects
where task_id !=(select distinct id
from wri$_adv_tasks
where name='AUTO_STATS_ADVISOR_TASK');
SQL> select count(*)from wri$_adv_objects_new;
COUNT(*)
----------
2968
insert /*+ APPEND */ into wri$_adv_objects
select * from wri$_adv_objects_new;
复制
truncate后查看空间占用:
select OCCUPANT_NAME,OCCUPANT_DESC,SPACE_USAGE_KBYTES/1024 USAGE_MB
from V$SYSAUX_OCCUPANTS
order by SPACE_USAGE_KBYTES DESC;
SM/ADVISOR Server Manageability - Advisor Framework 6.1875
复制
2、缩短任务执行历史的保存时间
确认当前设定的保持期间(30天或UNLIMITED)
select task_name, parameter_name, parameter_value
FROM DBA_ADVISOR_PARAMETERS
where task_name='AUTO_STATS_ADVISOR_TASK'
and PARAMETER_NAME like '%EXPIRE%';
复制
修改设定的保持期间
可以通过下面的命令,将EXECUTION_DAYS_TO_EXPIRE修改为15天,即执行历史数据的保存时间为15天:
connect as sysdba
BEGIN
DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER (
task_name => 'AUTO_STATS_ADVISOR_TASK'
, parameter => 'EXECUTION_DAYS_TO_EXPIRE'
, value => 15
);
END;
/
复制
3、也可以禁用该任务,而不是删除。
declare
filter1 clob;
begin
filter1 := dbms_stats.configure_advisor_rule_filter('AUTO_STATS_ADVISOR_TASK',
'EXECUTE',
NULL,
'DISABLE');
END;
/
复制
文章转载自DBA小记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1871次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
867次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
604次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
496次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
486次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
464次阅读
2025-04-14 09:40:20
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
405次阅读
2025-04-07 09:44:54
天津市政府数据库框采结果公布!
通讯员
359次阅读
2025-04-10 12:32:35
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
356次阅读
2025-04-17 17:02:24
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
336次阅读
2025-04-18 10:01:22
热门文章
Oracle RAC中的VIP和SCAN IP
2020-10-27 11120浏览
ORA-28040: No matching authentication protocol
2021-08-07 10908浏览
Oracle表空间碎片整理
2020-10-27 9620浏览
深入解读AWR报告
2020-10-27 7052浏览
oracle表碎片的整理
2020-10-27 6467浏览
最新文章
ORA-28040: No matching authentication protocol
2021-08-09 1365浏览
WRI$_ADV_OBJECTS表过大,导致PDB的SYSAUX表空间不足
2021-08-07 1994浏览
ORA-28040: No matching authentication protocol
2021-08-07 10908浏览
ORA-13639: The C operation was interrupted because it timed OUT
2021-08-06 2637浏览
Alter Database Add Supplemental Log Data 命令挂起
2021-02-24 4046浏览