`
liyan4770
  • 浏览: 15319 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

【转载】oracle变态错误解决:ORA-00604: 递归 SQL 级别 2 出现错误

 
阅读更多

转载:http://hi.baidu.com/mybaidu/blog/item/777c8acbd2ae7ef653664f43.html

 

Oracle变态错误:


问题描述:

        在使用sys用户执行删除infa用户下表时,报如下错误:
         ORA-00604: 递归 SQL 级别 2 出现错误
         ORA-00942: 表或视图不存在
         查看E:\CO.Software\oracle\product\10.2.0\admin\orcl\bdump\alert_orcl.log发现当时报如下错误:
         ORA-00604: error occurred at recursive SQL level 2 ORA-00942: table or view does not exist
        
         同样使用sys用户在sqlplus模式和PL/SQL模式下作删除infa用户和删除infa表空间都会报如上错误。

问题定位:

         使用sqlplus sys/oracle as sysdba登陆
         执行alter session set sql_trace=ture;
         之后再次执行drop user infa cascade;
         会报如下错误:
         ORA-00604: 递归 SQL 级别 2 出现错误
         ORA-00942: 表或视图不存在
         再执行alter session set sql_trace=false;
         这时去E:\CO.Software\oracle\product\10.2.0\admin\orcl\udump路径下查看刚刚时间点生成的trace文件:orcl_ora_4468.trc
         在里面会找到如下sql:
         PARSE ERROR #1:len=273 dep=2 uid=0 oct=3 lid=0 tim=7580575894 err=942
         select position#,sequence#,level#,argument,type#,charsetid,charsetform,
                    properties,nvl(length, 0), nvl(precision#, 0),nvl(scale, 0),nvl(radix, 0), type_owner,type_name,type_subname,type_linkname,pls_type
         from argument$
              where obj#=:1 and procedure#=:2 order by sequence# des
         【如果上面执行的是drop表而不是drop用户操作,则相应trace中sql如下:】
         【SELECT topology  
             FROM SDO_TOPO_METADATA_TABLE a, TABLE(a.Topo_Geometry_Layers) b  
                WHERE b.owner = 'SYS' AND b.table_name = 'OPB_ANALYZE_DEP' END OF STMT】
        

         此时可以猜测sys用户下argument$表不存在,使用PL/SQL登陆查看发现sys用户下确实没有argument$表。

问题解决:从另一台oracle正常的机器中使用sys用户登录,将argument$表exp位dmp文件,将此dmp文件拿到本机,执行如下命令将argument$表导入到本机的sys用户下:
          imp 'sys/oracle@orcl as sysdba'

此时再次执行删除infa用户下表,又报如下错误:

问题描述:

          ORA-00604: 递归 SQL 级别 1 出现错误 ORA-38301: 无法对回收站中的对象执行 DDL/DML

         执行purge recyclebin和purge table 'table_name'问题也无法解决。

问题定位:

         同样使用使用sqlplus sys/oracle as sysdba登陆
         执行alter session set sql_trace=ture;
         之后再次执行drop table OPB_ANALYZE_DEP;
         会报如下错误:ORA-00604: 递归 SQL 级别 1 出现错误 ORA-38301: 无法对回收站中的对象执行 DDL/DML
         再执行alter session set sql_trace=false;
         这时去E:\CO.Software\oracle\product\10.2.0\admin\orcl\udump路径下查看刚刚时间点生成的trace文件orcl_ora_3920.trc
         在里面会找到如下sql:
         PARSE ERROR #9:len=50 dep=1 uid=0 oct=3 lid=0 tim=10735596185 err=942
         select count(*) from association$ where obj# = :1
         此时可以确定sys用户下association$表也不存在。


问题解决:

         同样使用exp和imp方式将association$表导入到本机sys用户中,
         此时再次执行删除infa用户下表,成功!!!!!!!

         免去了我重装Oracle的工作量。

         不过还不知道为什么我的Oracle sys用户下会莫名其妙缺少了两张系统表。

分享到:
评论

相关推荐

    ORA-04052p5731178_92080_WINNT.zip

    ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...

    数据恢复:被注入的软件及 ORA-600 16703 灾难的恢复.docx

    首先,我们看到一个客户在尝试启动Oracle数据库时遭遇了ORA-01092和ORA-00704错误,随后引发了ORA-00600错误,其中错误参数包括16703、1403和20。这些错误提示表明数据库在启动过程中遇到问题,导致实例终止。 在...

    oracle错误码大全

    ### Oracle 11g 错误码大全解析 #### ORA-00001: 违反唯一约束条件 **描述**: 当尝试插入或更新一个已经存在的唯一键值时触发此错误。确保数据符合唯一性约束。 **解决方法**: - 检查并修改数据,确保不会重复...

    oracle常见错误及解决方法

    Oracle数据库在运行过程中可能会遇到各种错误,这些错误通常以ORA-XXXX的形式呈现,每个错误代码对应着特定的问题和解决策略。以下是一些常见的Oracle错误及其解释和解决方法: 1. ORA-00001: 违反唯一约束条件 当...

    oracle中常用错误代码总结

    8. ORA-00036: 表示递归SQL调用超过了最大级别,这通常意味着存在无限递归的情况,需要检查和修正查询逻辑。 9. ORA-00054: 资源正忙,需要指定NOWAIT,意味着操作需要等待资源释放,可以考虑使用NOWAIT选项或调整...

    oracle错误手册 pdf

    - **描述**:递归SQL级别超过了允许的最大值。 - **解决方案**:优化SQL逻辑以减少递归深度。 - **ORA-00037:无法转换到属于不同服务器组的会话** - **描述**:尝试转换到不属于同一服务器组的会话时触发。 - ...

    oracle报错的详细列表

    #### ORA-00036: 超过递归SQL()级的最大值 当递归查询级别超过了最大限制时触发。 #### ORA-00037: 无法转换到属于不同服务器组的会话 当尝试将会话从一个服务器组转移到另一个不同的服务器组时触发。 #### ORA-...

    ORACLE错误代码文档

    递归SQL操作达到最大深度,可能有无限循环或错误的递归逻辑。 22. ORA-00037: 无法切换到属于不同服务器组的会话 尝试在不同的服务器组间切换会话,但系统不支持。 23. ORA-00038: 无法创建会话: 服务器组属于另...

    ORACLE错误码大全

    在存储过程错误方面,我们可以看到 ORA-00034:无法在当前 PL/SQL 会话中、ORA-00035:LICENSE_MAX_USERS 不能小于当前用户数、ORA-00036:超过递归 SQL () 级的最大值等错误码,这些错误码都是在存储过程管理方面的...

    oracle错误代码大全

    21. ORA-00036: 超过递归SQL调用的最大级别,这可能是因为无限递归或循环函数调用。 22. ORA-00037: 无法转换到属于不同服务器组的会话,可能涉及到分布式数据库环境。 23. ORA-00038: 无法创建会话,因为服务器组...

    oracle错误一览表

    - **解决方法**: 减少递归深度或调整递归SQL的最大级别。 **ORA-00037: 无法转换到属于不同服务器组的会话** - **描述**: 尝试将一个会话转换到不同服务器组中。 - **解决方法**: 确保源会话和目标服务器组属于同一...

    Oracle错误代码大全.pdf

    21. ORA-00036: 超过递归SQL级别的最大值,这可能是由于递归查询过于复杂。 22. ORA-00037: 无法转换到属于不同服务器组的会话,这涉及到数据库的分布式特性。 23. ORA-00038: 无法创建会话:服务器组属于其他用户...

    Oracle错误代码大全

    ### Oracle错误代码详解 #### ORA-00001: 违反唯一约束条件 - **描述**:当尝试插入或更新一个行时,如果该行违反了表中的唯一约束,则会出现此错误。 - **解决方法**: - 检查数据是否符合表结构中的唯一性约束。...

    Oracle错误代码大全[借鉴].pdf

    21. ORA-00036: 超过递归SQL的最大级数,通常与递归函数或存储过程中的无限循环有关。 22. ORA-00037: 无法转换到属于不同服务器组的会话,这是因为会话和服务器组之间存在绑定。 23. ORA-00038: 无法创建会话:...

    oracle中表无法删除

    1. **ORA-00604: 递归SQL级别X出现错误** - 这个错误通常表明在执行SQL语句的过程中,触发了另一个SQL语句(递归调用),而这个后续的SQL语句在执行时出现了问题。 2. **ORA-00942: 表或视图不存在** - 这意味着...

    ORACLE错误代码

    11. ORA-00034至ORA-00036: 这些错误涉及到PL/SQL会话、许可证限制和递归SQL操作。可能需要优化PL/SQL代码,检查许可证设置,或调整系统资源限制。 12. ORA-00037至ORA-00059: 这些错误与会话间的转换、资源争用、...

    Oracle错误一览表汇编.docx

    递归SQL深度超过设定限制,可能需要优化查询或调整参数`MAX_RECURSION_LEVEL`。 这些错误只是Oracle数据库中的一部分,每个错误都有其特定的原因和解决策略。在遇到这些问题时,通常需要根据错误的具体信息、数据库...

    Oracle 错误一览表.docx

    ##### orA-00036: 超过递归SQL的最大级别 - **描述**:当递归SQL查询达到最大递归深度时触发。 - **解决方法**:调整递归SQL的最大深度,或者优化递归逻辑以减少递归层数。 ##### orA-00037: 无法转换到属于不同...

Global site tag (gtag.js) - Google Analytics