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

时间:2011-03-20 09:54:21

标签: 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_

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:0)

对于支持分页的Exists子查询的查询,我遇到了同样的问题。我们通过将子查询重写为一个简单的查询来识别问题,然后提出了一个更改子查询选择语句的简单解决方案:我们改为仅选择我们需要的字段tablename.*,而不是使用tablename.id。 1}}在我们的例子中。问题解决了。

希望这有帮助。