重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛
标题:
SYSAUX表空间对象WRI$_ADV_OBJECTS
[打印本页]
作者:
Inkcup
时间:
7 天前
标题:
SYSAUX表空间对象WRI$_ADV_OBJECTS
WRI$_ADV_OBJECTS 是 Oracle 数据库中的一张系统表,存放在 SYSAUX 表空间里。
它最主要的作用是,用来存储数据库一个内置“顾问”功能的运行数据,这个“顾问”专门负责分析数据库的统计信息是否健康。
-------------------------------------------------------------------
核心功能:这是 Oracle 12.2 版本引入的“优化器统计信息顾问”功能的任务日志表。简单来说,数据库的“优化器”是决定SQL执行快慢的关键,而这个“顾问”会定期检查优化器使用的“统计信息”是否准确、过时。WRI$_ADV_OBJECTS 表就记录了每一次检查的详细报告和诊断数据。
引起空间问题:这个“统计信息顾问”任务(AUTO_STATS_ADVISOR_TASK)会在数据库的维护窗口自动运行。如果其历史数据没有被及时清理,它就会不断膨胀,吃掉大量 SYSAUX 表空间,从而导致空间告警。
-------------------------------------------------------------------
三种处理思路:
=========
1.调整数据保留时间(推荐首选)
--这是最温和的办法。通过命令修改历史数据的保留天数(例如从无限期改为15天或30天),让数据库自动清理旧数据。
-- 例如,将历史数据保留时间改为15天
BEGIN
DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER (
task_name => 'AUTO_STATS_ADVISOR_TASK',
parameter => 'EXECUTION_DAYS_TO_EXPIRE',
value => 15
);
END;
/
=========
2.直接删除顾问任务(效果彻底,影响最大)
--这会直接删除 AUTO_STATS_ADVISOR_TASK 任务,其所有关联的历史数据也会一并被清除。
DECLARE
v_tname VARCHAR2(32767);
BEGIN
v_tname := 'AUTO_STATS_ADVISOR_TASK';
DBMS_STATS.DROP_ADVISOR_TASK(v_tname);
END;
/
-- 删除任务后,最好重组一下表和索引以释放空间
ALTER TABLE WRI$_ADV_OBJECTS MOVE;
ALTER INDEX WRI$_ADV_OBJECTS_PK REBUILD;
=========
3.手工清理表(处理超大表时用):
--如果表已经巨大到无法用 DELETE(会消耗海量undo表空间),可以使用“创建临时表、截断原表、再插回”的方式。这属于紧急处理方案,操作前务必在测试环境验证。
欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2