본문 바로가기

인프라/데이터 베이스

ORA-00600: internal error code, arguments: [HO define: Long fetch]

[현상]

이기종간 DB링크를 사용하여 두 컬럼을 조회시 ORA-00600: internal error code, arguments: [HO define: Long fetch] 오류 발생

*  특이점: 컬럼을 하나만 조회하면 오류없이 조회 가능

 

EX)
SELECT A.COL1
          A.COL2
FROM 테이블명@DB_LINK명 A
WHERE ~~;

 

[원인]

https://support.oracle.com/knowledge/Oracle Database Products.2270309_1.html 

3rd party tools (PLSQL developer , Toad for oracle)에서 발생할 수 있는 현상

 

Oracle에서는테이블당 LONG type은 한 컬럼만 생성할 수 있는데

A.COL1, A.COL2 컬럼이 원DB에서는 에서는 VARCHAR2이지만 Oracle에서 조회 시 (desc 테이블명@DB_LINK명) LONG type으로 조회되어

두 컬럼을 동시에 조회 시 3rd party tools에서 에러가 발생한 경우였다

 

[해결?]

3rd party tools 에서 발생하는 현상으로 sqlplus에서는 정상조회가 가능하다.

조회 tool에대한 변경이 불가할 경우 LONG type을 변경해준다.

 

위 케이스의 경우 오라클 gateway의 $ORACLE_HOME/hs/init<DSN>.ora 파일 설정변경하니 VARCHAR2로 조회되긴했으나 같은 gateway를 사용하는 다른 DB에서는 똑같이 파리미터를 변경해도 LONG으로 조회되더라..

 

변경 전> HS_KEEP_REMOTE_COLUMN_SIZE=REMOTE

변경 후> HS_KEEP_REMOTE_COLUMN_SIZE=ALL

 

* 변경 후 varchar2로 조회 된 환경: Oracle 10.2.5.12 / Gataway 11g / AIX 5.3

                            안된 환경: Oracle 11.2.0.3 / Gateway 11g / Windows 2008