상세 컨텐츠

본문 제목

ORA-01555: snapshot too old: rollback segment number 9 with name "RBS07" too small

프로그래밍/DB

by 라제폰 2008. 12. 26. 13:07

본문

sql plus상에서 spool을 이용해 결과를 받다가 어느 시점에서 아래와 같은 에러가 발생 합니다.
받을 데이터의 건수는 약 25만건 이구요.. 길이는 80byte정도 됩니다.
원인과 대처방법을 알고 싶습니다.

----------------- 아래 ------------------
오류:
ORA-01555: 너무 이전 스냅샷:롤백 세그먼트 1 수에 "RBS0" 이름으로 된 것이 너무
작습니다
ORA-02063: preceding line from SKDOORS_LMCUSER
-------------------------------------------

해당 작업이 정기적인 작업인지 아니면 일시적인 작업인지 궁금하군요..

아마도 rollback segment 부족해서 나는 것 같은데, 이건 여러가지가 복합적으로
일어나는 경우가 많습니다.

select라면 rollback보다는 temporary가 부족한거 아닌가 생각을 해보기도 하는데
일단 "ORA-01555: 너무 이전 스냅샷:롤백 세그먼트 1 수에 "RBS0" 이름으로 된 것이 너무
작습니다 " 라고 뜬다면 해당 transaction이 rollback segment을 사용한다고 봐야겠는데

그렇다면 현재의 rollback segment size가 얼마나 되는지 그리고 어느정도 사용되고
있는지 확인이 필요합니다

즉 rollback segment는 혼자만 사용하는것이 아니기 때문에 여러개의 rbs가 있다면
다른곳에서도 발생할수 있습니다, 때로는 운 좋게 error 발생 안할수도 있고..

batch 성 작업이라면 별도로 query 결과 size보다 큰 rollback segment 만들고
상태을 offline 상태에서 유지하다 필요시 사용하는게 좋을듯 합니다

alter rollback segment simtler online;
set transction use rollback segment simtler;

SQL

alter rollback segment simtler offline;


관련글 더보기