有渠道反饋,HIS軟件在對數據進行保存的時候,提示ora-600錯誤,具體的錯誤信息如下:
[Microsoft][ODBC driver forOracle][Oracle]ORA-20999: ORA-00600: 內部錯誤代碼, 參數:[kcbz_check_objd_typ], [0], [0], [1], [], [], [], [], [], [], [], []
ORA-06512: 在"ZLHIS.ZL_ERRORCENTER", line 73
ORA-06512: 在 "ZLHIS.ZL_病人XX打印_UPDATE",line 231
ORA-06512: 在 line 1
該錯誤無法跳過,導致業務無法正常運行。
按理這個提示還是比較明確,根據經驗判斷可能是ZL_病人XX打印_UPDATE可能有問題,結合ORA-06512錯誤,嘗試重建該過程和同義詞,執行了以上操作問題依舊。
接著分析下ORA-600[kcbz_check_objd_typ]錯誤,該錯誤按照百度上的解釋是由於Oracle在檢查內存中的數據塊時,發現數據塊上的對象號是錯誤的,拋出該錯誤提示,進一步分析問題,發現是在訪問【病人XX打印】表的時候拋出的錯誤,我們單獨對該表進行分析,我們對該表進行全表查詢的時候,提示ora-08103錯誤,但是如果只查詢部分表,則查詢正常。
<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+tavKx8bkyrW4w7bUz/PKx7Tm1Nq1xKOsyOfPwqO6PC9wPgo8cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20150528/2015052810190127.jpg" alt="\">
我們再對該表的結構進行排查,發現該表的索引都是BIN$類似的名稱,證明該表是通過閃回方式進行了恢復操作,這裡我們終於定位了問題的所在。
問題產生的根本原因就是因為操作員誤操作,對病人護理打印表進行了drop操作,然後用閃回方式進行了恢復,但是因為某些原因,可能導致數據恢復了,但是數據庫字典表相關內容出現了錯誤(或者叫不匹配),這樣就導致數據庫對該表做任何操作,都會提示錯誤,如我們對ZLHIS用戶進行統計信息收集,同樣會得到如下提示: