SW/Database / / 2025. 2. 9. 13:49

ORA-08103: Object no longer exists / 원인과 해결방법

반응형

ORA-08103: Object no longer exists / 원인과 해결 방법

ORA-08103 오류는 테이블 또는 인덱스와 같은 객체가 삭제되었거나 존재하지 않을 때 발생하는 오류입니다.

 

 

ORA-08103: Object no longer exists / 원인과 해결방법

 

 

오류 원인

ORA-08103 오류는 다음과 같은 원인으로 인해 발생할 수 있습니다:

  1. 테이블 또는 인덱스 삭제: - 특정 객체(테이블, 인덱스 등)가 삭제되었지만 해당 객체에 대한 쿼리가 실행된 경우
  2. 세션 내에서 객체가 제거됨: - 트랜잭션 중에 객체가 삭제되었거나 재생성되었을 경우
  3. 디스크 손상 또는 블록 손실: - 데이터 파일의 일부가 손상되어 Oracle이 객체를 찾을 수 없는 경우
  4. 일관성 문제: - UNDO 데이터를 통해 과거 시점으로 접근하려고 할 때 해당 객체가 삭제된 경우

해결 방법

ORA-08103 오류를 해결하기 위해 다음 단계를 수행할 수 있습니다:

  1. 해당 객체가 존재하는지 확인: 해당 객체가 현재 존재하는지 확인합니다.
    SELECT object_name, object_type FROM dba_objects WHERE object_name = 'TABLE_NAME';
    만약 결과가 없다면 테이블이 삭제된 것입니다.
  2. 테이블을 복원할 수 있는지 확인: 테이블이 휴지통에 있는지 확인 후 복구합니다.
    SELECT original_name, object_name FROM user_recyclebin;
    복원하려면:
    FLASHBACK TABLE TABLE_NAME TO BEFORE DROP;
  3. 데이터 파일 및 블록 점검: 손상된 블록이 있는지 확인합니다.
    SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;
    필요하면 복구 절차를 수행합니다.
  4. UNDO 설정 확인: 과거 데이터를 조회할 때 UNDO 정보가 충분한지 확인합니다.
    SHOW PARAMETER UNDO_RETENTION;
    UNDO_RETENTION 값을 증가시켜 문제가 재발하지 않도록 합니다.
  5. 애플리케이션 코드 수정: 삭제된 객체를 참조하는 코드가 실행되지 않도록 검토합니다.

간단 요약

  • ORA-08103 오류는 삭제되었거나 존재하지 않는 객체를 참조할 때 발생합니다.
  • 해결 방법: - `DBA_OBJECTS`에서 객체 존재 여부 확인 - 휴지통에서 테이블 복원 (`FLASHBACK TABLE`) - 데이터 파일 및 블록 손상 점검 (`V$DATABASE_BLOCK_CORRUPTION`) - UNDO 설정 확인 (`SHOW PARAMETER UNDO_RETENTION`) - 애플리케이션 코드 수정
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유