2011-03-20 4 views
0

오라클 11 일 - 어느 한이 문제에 나를 도울 수 오라클 10gR2의 정상 실행 03,113 하지만 같은 문을선택 문주고 오라 - 03113 내가 오라있어 I 오라클 11g에서 다음 SQL 문 실행

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

ORA-03113은 오라클 오류 코드를 모르는 사람들을 위해 '통신 채널에서 파일 끝'입니다 (http://ora-03113.ora-code.com). /). –

+0

지금까지 시도한 것은 무엇입니까? 예 : 힌트를 제거하고 UNION을 UNION ALL으로 변경 하시겠습니까? –

답변

5

ORA-03113은 오라클의 일반적인 "서버 오류"오류 중 하나입니다. 진단 정보가 들어있는 USER_DUMP_DEST 디렉토리에 추적 파일이 있어야합니다. 운 좋게도 코어 덤프 (CORE_DUMP_DEST 디렉토리)가있을 것입니다. 코어 덤프에서 스택 추적을 얻는 것이 더 힘들 기 때문에 나는 운이 없다고 말한다.

이러한 파일에 대한 액세스 및 해석에 도움이되는 DBA가 필요할 수도 있습니다.

ORA-03113은 일반적으로 블록 또는 인덱스 손상과 같은 데이터베이스의 무결성 문제를 나타냅니다. 따라서이 문제를 해결하기 위해 DBA의 도움이 필요할 수도 있습니다.

간략히 말하자면, ServerFault에서이 서버로 마이그레이션하도록 투표 한 사람들은 잘못했다고 생각합니다.

+5

ORA-03113이 오라클의 버그에서 비롯된 것으로 알고있어 OP 문제가 데이터 파일이 손상되지 않았을 수 있습니다. 이러한 경우 솔루션은 쿼리를 다시 작성하는 것입니다. 이 오류의 원인이되는 쿼리에는 대개 하위 쿼리가 있으므로 더 적은 수의 하위 쿼리를 사용하여 쿼리를 다시 작성하는 것이 좋습니다. –

0

페이지 매김을 지원하는 Exists 하위 쿼리가있는 쿼리와 동일한 문제가있었습니다. 우리는 간단한 쿼리에 하위 쿼리를 다시 작성한 다음 하위 쿼리 select 문을 변경하는 간단한 해결책을 찾았습니다. tablename.* 대신에 우리는 필요한 필드 (예 : tablename.id) 만 선택했습니다. 그리고 문제가 해결되었습니다.

희망이 도움이됩니다.