­

優化器統計跟蹤(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 的執行計劃沒有影響。詳情查看網頁 //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]。在這種情況下,可能需要重新啟動資料庫。

 

 

Tags: