0

当我在 Oracle 11g 上运行下一条 sql 语句时,我得到了 oracle - 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_
4

2 回答 2

5

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

您很可能需要 DBA 来帮助访问这些文件并进行解释。

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

简而言之,我认为投票支持从 ServerFault 迁移它的人这样做是错误的。

于 2011-03-20T13:54:31.737 回答
0

I had the same problem with a query with Exists sub-query which support pagination. We identify the problem by re-writing the sub query to a simple one and then came a simple solution of changing the sub query select statement: instead of use tablename.*, we changed to only select the fields we need, tablename.id in our case. And the problem is solved.

Hope this helps.

于 2013-07-10T16:52:20.137 回答