優化器統計跟蹤(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 表裡面的數據
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]。在這種情況下,可能需要重新啟動資料庫。