天天看點

ORA-00600 qosdExpStatRead expcnt mismatch

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.備份資料庫涉及到修改資料字典

  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;

  1. 修改後,執行如下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;

修複後,通過一天的觀察沒有出現該問題了。