广

oracle数据库

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    如何解决ora-600 12700错误问题

    2018-04-16 10:57:56 次阅读 稿源:互联网
    广告
    全网推广平台,软文发布

        简单描述了解决过程.对类似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表删除, 再改名改表即可,问题解决,后续权限交给相关开发人员解决。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告
    广告