select语句在Oracle 11上给出ora-03113

Has*_*san 0 oracle oracle10g oracle11g ora-03113

当我在Oracle 11g上运行下一个sql语句时,我得到了ora - 03113但在oracle 10gr2上运行正常的语句可以帮助我解决这个问题

    SELECT /*+ INDEX_JOIN(b) */
           b.child_
      FROM tab1 b
START WITH b.child_ IN (
     SELECT /*+ INDEX_JOIN(c) */
            c.id
       FROM tab2 c
      WHERE c.id IN (SELECT /*+ INDEX_JOIN(d) */
                            d.id
                       FROM tab3 d
                      WHERE d.id2 = 'X'
                     UNION
                     SELECT 'X'
                       FROM DUAL))
CONNECT BY b.parent_ = PRIOR b.child_
Run Code Online (Sandbox Code Playgroud)

APC*_*APC 5

ORA-03113是Oracle的通用"服务器故障"错误之一.USER_DUMP_DEST目录中应该有一个包含诊断信息的跟踪文件.如果你运气不好,那么将会有一个核心转储(在CORE_DUMP_DEST目录中).我说不走运,因为从核心转储中获取堆栈跟踪更难.

您可能需要DBA来帮助访问这些文件以及解释.

ORA-03113通常表示数据库的完整性存在问题,例如阻止或索引损坏.因此,您可能还需要DBA帮助解决此问题.

简而言之,我认为投票从ServerFault迁移的人是错误的.

  • 我已经知道ORA-03113是由Oracle中的错误引起的,因此OP的问题可能不是一个损坏的数据文件.在这种情况下,解决方案是重写查询.导致此错误的查询通常具有子查询,因此要尝试的一件事是使用较少的子查询重写查询. (5认同)