程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 如何解決ora-600 12700錯誤問題

如何解決ora-600 12700錯誤問題

編輯:關於Oracle數據庫

    簡單描述了解決過程.對類似12700錯誤起一個拋磚引玉的作用.

    一、問題現象:

  在報警文件中從早上9:30開始,一直到處理問題時,出現大量的ORA-600 12700錯誤。通過TRC文件,發現是執行以下語句,就會報這個錯誤:

 select ID,AVERTEXID,AVERTEXTYPE,ZVERTEXID,ZVERTEXTYPE from PHYSICALCONNECTION
where (AVERTEXTYPE='C' and AVERTEXID in (840402))
or (ZVERTEXTYPE='C' and ZVERTEXID in (840402))

    二、問題還原:

    再次執行下面的語句,不能返回結果,直接報600 12700錯誤。

Select Id, Avertexid, Avertextype, Zvertexid, Zvertextype From cq.Physicalconnection Where (Avertextype = 'C' And Avertexid In (840402))
Or (Zvertextype = 'C' And Zvertexid In (840402))

    三、問題分析:

    1、使用下面的SQL語句,都不會報錯: Select Id, Avertexid, Avertextype, Zvertexid, Zvertextype From cq.Physicalconnection Where (Avertextype = 'C' And Avertexid In (840402)); Select Id, Avertexid, Avertextype, Zvertexid, Zvertextype From cq.Physicalconnection Where (Zvertextype = 'C' And Zvertexid In (840402)); Select Id, Avertexid, Avertextype, Zvertexid, Zvertextype From cq.Physicalconnection Where (Zvertextype = 'C' And Zvertexid In (840402)) Union All Select Id, Avertexid, Avertextype, Zvertexid, Zvertextype From cq.Physicalconnection Where (Avertextype = 'C' And Avertexid In (840402)) ;

    2.分析表

    執行下面的分析語句,也沒有報任何錯誤。

    ANALYZE TABLE cq.Physicalconnection VALIDATE STRUCTURE CASCADE

    看來表數據是好的

    3.重建這個表的索引 Alter index CQ.IDX_AVERTEXID Rebuild / Alter index CQ.IDX_PHYCONN_ACONNECTPOINT Rebuild / Alter index CQ.IDX_PHYCONN_OLDID Rebuild / Alter index CQ.IDX_PHYCONN_OWNERTYPE Rebuild / Alter index CQ.IDX_PHYCONN_ZCONNECTPOINT Rebuild / Alter index CQ.IDX_ZVERTEXID Rebuild / Alter index CQ.sys_c0011311 Rebuild

     重建索引後,問題依舊。

    4.根據METALINK上的說明,設置10078事件,問題依舊

  Set event 10078 At session level SQL> Alter session set events '10078 trace name context forever' SQL> alter system flush shared_pool; Run the select query failing with ORA-00600[12700] 

    具體參見Note:337631.1

    5.根據Note:155933.1的說法,應該是ROWID找不到了,因此,我想到重建建立一個表來測試一下。

    Create Table cq.Physicalconnection_bak As Select * From cq.Physicalconnection
再執行: Select Id, Avertexid, Avertextype, Zvertexid, Zvertextype From cq.Physicalconnection_bak Where (Avertextype = 'C' And Avertexid In (840402))
Or (Zvertextype = 'C' And Zvertexid In (840402))

    執行以上語句無問題。

  因此,決定通過重新創建表語句來解決這個問題。

    四、解決問題

    通過Create Table cq.Physicalconnection_bak As Select * From cq.Physicalconnection,再把這個cq.Physicalconnection表刪除, 再改名改表即可,問題解決,後續權限交給相關開發人員解決。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved