본문 바로가기
Database/Oracle

ORA-00600 내부 오류 코드 트러블슈팅

by eurowondollaryen 2022. 1. 27.

서론

제가 현재 참여중인 프로젝트에서는, Oracle DB를 사용중입니다.

개발DB-운영DB간 테스트데이터 전송 등의 용도로, 개발DB->운영DB를 바라보고 있는 DB LINK를 갖고 있습니다.

이 DB LINK를 테스트하는데 잘 활용하고 있었는데, 어느 날 아래와 같은 에러코드가 발생하게 되었습니다.

ORA-00600 ora-00600 [2252], [8726], [838724222]

1. ORA-00600의 의미

구글링해본 결과, ORA-00600은 원인이 명확하게 하나로 정해진 에러코드가 아니며, 뒤에 나오는 인수에 따라 그 원인이 다르다고 합니다. Oracle 자체적인 버그이며, 당장 DB에 문제가 생기지는 않는 경우가 대부분입니다.

 

2. ORA-00600 [2252]의 의미

ORA-00600 [2252] 는 무엇을 의미할까요?

2252 인수에 대한 에러는, SCN 증가율이 높은 DB가 증가율이 낮은 DB에 연결될 때 발생합니다.

ORACLE 공식 문서에서는, 11.1.0.7 이하 버전에서 DB Link를 사용 시, SCN의 비정상적인 증가로 인해 DB가 비정상 종료되는 경우 라고 합니다.

 

3. 조치 방법

제가 속한 프로젝트의 경우, 개발DB와 운영DB의 Oracle 버전이 상이했습니다.(운영이 더 최신)

그래서, 개발 DB에 대한 버전 패치를 시도해서, 성공했습니다.

 

※ 다만, 주의할 점은, 패치할 DB에서 암호화 모듈을 사용중이시라면, 해당 모듈에 대한 영향 여부를 체크하셔야 합니다.

 

4. 에러 전체 메시지

DB 링크 명은 보안을 위해 지웠습니다.

ORA-00600: 내부 오류 코드, 인수: [ORA-00600: 내부 오류 코드, 인수: [2252], [8736], [1329296684], [], [], [], [], [], [], [], [], []

], [], [], [], [], [], [], [], [], [], [], []

ORA-02063: line가 선행됨 ([DBLINK이름]로 부터)

00600. 00000 -  "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"

*Cause:    This is the generic internal error number for Oracle program

           exceptions. It indicates that a process has encountered a low-level,

           unexpected condition. The first argument is the internal message

           number. This argument and the database version number are critical in

           identifying the root cause and the potential impact to your system.

 

5. 용어 정리 및 추가 정보

  • SCN : System Commit(Change) Number, 커밋이 발생하면 이를 처리하는 트랜잭션은 고유한 번호를 부여받는다. 즉, 데이터베이스 변경에 대한 타임스탬프 역할을 하는 값.
  • Oracle에서 DB Link 시 서로의 SCN이 동기화 되어야 하는 이유? : 동일한 대상 테이블에 대해 각기 다른 데이터베이스(KTR_DEV, KTR_ERP)에서 수정을 시도하면, 이에 대한 일관성이 보장되어야 한다. 그 역할을 하는 것이 SCN 값인데, 이것의 차이가 너무 나게 되면, 수정했을 때 일관성을 보장하기가 어려우므로, 오라클 프로그램 자체적으로 에러 처리를 하는 것.
  • 관련 처리 케이스 : 해당 오류는 Oracle 자체적인 오류로, 11.1.0.7 이하 버전에서는 DBLINK 사용 시 서로의 SCN을 동기화하지 못했으나, 패치 이후로는 동기화되어 해당 오류 발생하지 않음
  • SCN 확인 쿼리 : SELECT CHECKPOINT_CHANGE# FROM V$DATABASE;

'Database > Oracle' 카테고리의 다른 글

Oracle CLOB 데이터 조회 방법(iBatis)  (0) 2022.04.06