优化器统计跟踪(SYS.EXP_HEAD$ SYS.EXP_OBJ$ SYS.EXP_STAT$不)导致表空间 SYSAUX不断增长

资料来自support文档 ID 2354960.1

环境:

aws rds 19c(亚马逊云oracle 数据库)

背景:

在一次查看数据库表段的占用空间大小的时候,无意间发现其中EXP_开头的表占用很大的空间,如下:

 

 

 处理:

 

  • 优化器表达式跟踪在具有以下对象的 SYSAUX 中分配了过多空间:
  • Awrinfo 报告按以下对象显示大段使用情况   

SYS.EXP_HEAD$
SYS.EXP_OBJ$
SYS.EXP_STAT$

 

统计监控在 12.2 中默认启用。12.2 中的新优化器功能引入了监视表达式统计信息,以收集 SQL 查询中的表达式使用统计信息。

监控功能由隐含参数“_column_tracking_level”控制。

当监控表达式统计处于活动状态时,默认情况下启用。

然而,扯淡的是云上oracle参数组根本关闭不了这个参数(没有这个参数)

 

 

注意:in-memory 关闭对 SQL 的执行计划没有影响。详情查看网页 https://blogs.oracle.com/optimizer/expression-tracking

--禁用参数:_column_tracking_level

alter system set "_column_tracking_level"=17 scope=both;
--wait 10 minutes

--purge 表里面的数据

exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO();
truncate table sys.exp_head$ drop storage;
truncate table sys.exp_obj$ drop storage;
truncate table sys.exp_stat$ drop storage;
alter index SYS.I_EXP_HEAD$ rebuild tablespace sysaux online;
alter index SYS.I_EXP_STAT$ rebuild tablespace sysaux online;
alter index SYS.I_EXP_OBJ$ rebuild tablespace sysaux online;

--如果需要重启监控

alter system set "_column_tracking_level"=21 scope=both; 

 

注意:在执行这些步骤时,可能会遇到错误 ORA-00600: [qosdExpObjChange: rc!=1],这是内部错误 28681153 的结果:内部 PDCDB : ORA-00600:: [QOSDEXPSTATREAD: EXPCNT MISMATCH]。在这种情况下,可能需要重新启动数据库。

 

 

posted @ 2021-12-15 12:53  翰墨文海  阅读(1150)  评论(0编辑  收藏  举报