Oracle 12.2.0.1最近出現了ORA--0600錯誤,其詳細資訊如下:
ORA-00600: 内部錯誤代碼, 參數: [qosdExpStatRead: expcnt mismatch], [], [], [], [], [], [], [], [], [], [], []
ORA-06512: 在 "SYS.DBMS_STATS", line 1976
ORA-06512: 在 "SYS.DBMS_STATS", line 46935
ORA-06512: 在 "SYS.DBMS_STATS", line 47168
根據Oracle官方給出的檢查SQL語句,其執行結果如下:
引起通路題的原因是由于sys.exp_obj$.exp_cnt與sys.exp_stat$的行資料不比對所造成的
解決方案
1.備份資料庫涉及到修改資料字典
- 修複問題
SQL>update sys.exp_obj$ a set exp_cnt=(select count(*) from sys.exp_stat$ b where
a.objn=b.objn and a.snapshot_id=b.snapshot_id ) where a.objn=124789;
SQL>commit;
- 修改後,執行如下SQL确認是否還有記錄,如果沒有記錄,說明已經修改成功,送出。
SQL>With b as (
select count(*) cnt,objn,snapshot_id from sys.exp_stat$ es group by objn,snapshot_id)
select * from sys.exp_obj$ a, b where a.objn=b.objn and a.snapshot_id=b.snapshot_id
and a.EXP_CNT<>b.CNT;
修複後,通過一天的觀察沒有出現該問題了。