資料來自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 表里面的數據
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]。在這種情況下,可能需要重新啟動數據庫。
