当我在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_
答案 0 :(得分:5)
ORA-03113
是Oracle通用的“服务器故障”错误之一。 USER_DUMP_DEST
目录中应该有一个包含诊断信息的跟踪文件。如果你运气不好,那么会有一个核心转储(在CORE_DUMP_DEST
目录中)。我说不走运,因为从核心转储中获取堆栈跟踪更难。
您可能需要DBA来帮助访问这些文件以及解释。
ORA-03113
通常表示数据库的完整性存在问题,例如阻止或索引损坏。因此,您可能还需要DBA帮助解决此问题。
简而言之,我认为投票从ServerFault迁移的人是错误的。
答案 1 :(得分:0)
对于支持分页的Exists子查询的查询,我遇到了同样的问题。我们通过将子查询重写为一个简单的查询来识别问题,然后提出了一个更改子查询选择语句的简单解决方案:我们改为仅选择我们需要的字段tablename.*
,而不是使用tablename.id
。 1}}在我们的例子中。问题解决了。
希望这有帮助。