ORA-08103: object no longer exists
Oracle의미
실행 중인 쿼리가 접근하는 객체(테이블, 인덱스, LOB 세그먼트)가 더 이상 존재하지 않거나 물리 구조가 변경되었다. 보통 쿼리 진행 중 해당 객체에 DDL/TRUNCATE가 발생한 경우이다.
원인
쿼리가 열려 있는 동안 같은 객체가 TRUNCATE/DROP/SHRINK됨. 이동(MOVE) 또는 파티션 유지보수. 손상된 인덱스/세그먼트. LOB 세그먼트 접근 중 하위 구조가 사라짐. 동시 DDL 충돌.
해결 방법
객체가 여전히 존재하고 유효한지 확인한다: SELECT status FROM user_objects WHERE object_name = 'NAME'; 해당 인덱스/객체를 재구축(REBUILD)하거나 쿼리를 다시 실행한다. 장시간 쿼리가 사용 중인 객체에 TRUNCATE/DROP을 하지 않는다. 손상이 의심되면 ANALYZE ... VALIDATE STRUCTURE로 확인한다.
같은 데이터베이스의 다른 항목
- ORA-01427single-row subquery returns more than one row
- ORA-12899value too large for column
- ORA-30926unable to get a stable set of rows in the source tables
- ORA-01843not a valid month
- ORA-14400inserted partition key does not map to any partition
- ORA-01536space quota exceeded for tablespace
- direct path read대기: buffer cache를 거치지 않고 PGA로 블록을 직접 읽는 세션