ORA-01555: Snapshot too old: rollback segment number too small
Oracle의미
장시간 실행되는 쿼리가 시작 시점 기준의 읽기 일관성 이미지를 구성하는 데 필요한 과거 undo 데이터에 접근하지 못했다. 해당 undo 정보가 덮어써졌기 때문이다.
원인
작은 undo 테이블스페이스, 짧은 UNDO_RETENTION, 매우 많은 동시 DML 중의 장시간 쿼리, 또는 쿼리 안에서 같은 테이블을 커밋하는 루프(fetch across commit).
해결 방법
UNDO_RETENTION을 늘리고 undo 테이블스페이스를 확장한다. 가능하면 자동 관리(AUTOEXTEND on)에 맡긴다. 긴 쿼리는 작게 나누거나 비피크 시간에 실행한다. RETENTION GUARANTEE를 검토한다: ALTER TABLESPACE undotbs1 RETENTION GUARANTEE. 루프 안에서 커밋하는 애플리케이션 로직을 수정한다.
같은 데이터베이스의 다른 항목
- ORA-00054Resource busy and acquire with NOWAIT specified or timeout expired
- ORA-00060Deadlock detected while waiting for resource
- ORA-01017Invalid username/password; logon denied
- ORA-01652Unable to extend temp segment by N in tablespace
- ORA-04031Unable to allocate N bytes of shared memory
- ORA-12154TNS: could not resolve the connect identifier specified
- ORA-12514TNS: listener does not currently know of service requested in connect descriptor