重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 117|回复: 0
打印 上一主题 下一主题

[参数设置] SYSAUX表空间对象WRI$_ADV_OBJECTS

[复制链接]
跳转到指定楼层
楼主
发表于 7 天前 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
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表空间),可以使用“创建临时表、截断原表、再插回”的方式。这属于紧急处理方案,操作前务必在测试环境验证。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-8-21 06:46 , Processed in 0.228156 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表