[Oracle 에러] ORA-30036: unable to extend segment by 8 in undo tablespace
데이터베이스/Oracle 2015. 6. 29. 10:09▣ ORA-30036: unable to extend segment by 8 in undo tablespace
해당 에러는 Undo TableSpace가 부족해서 발생하는 에러이다.
아마 대부분의 경우는 Rollback Segment가 부족해서 발생하는 에러일 것이다.
Oracle 9i 이상부터는 Undo TableSpace를 AUM에서 관리 하기 때문에, Rollback Segment관련 문제들이 종종 발생 한다.
해당 에러의 해결 방법은 2가지가 있다.
1. Undo TableSpace 재생성(확대)
2. Update/Insert/Delete등의 로직 수정(작은 단위로 잘라서 처리)
이 두가지 방법 중, 두번 째 방법을 추천 한다.
그 이유는 일회성 작업 이라면, Undo TableSpace를 늘려주는 것만으로 해결이 될 것 같지만..
대용량 작업을 하게 되면 DB에 무리도 주게되고, 만약 실제 운영 중인 서버라면 Undo TableSpace를 늘리는데 몇주 또는 한달 이상이 걸리 수도 있기 때문이다.
그리고 1회성 작업을 위해 TableSpace를 늘리는 것은 자원 낭비가 될수도 있다.
게다가 서버 로직상 드물지만 다시 대용량 작업이 이루워 질 수 있다면, 다음에 동일한 에러가 또 발생 하거나 성능상 이슈가 발생할 수 있으니 로직 수정을 통해 몇만건 또는 몇십만건 단위로 잘라서 처리하도록 하는게 좋다.
필자는 1회성 작업으로 500만건 이상의 데이터를 Delete 하다 해당 에러가 발생 했으며, 50만건씩 나눠서 Delete 하도록 로직을 수정해 해당 작업을 마무리 했다.
'데이터베이스 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 시퀀스(Sequence) 생성 수정 삭제하기 (0) | 2015.08.10 |
---|---|
[Oracle] 오라클 에러 ORA-00904: invalid identifier / 부적합한 식별자 (0) | 2015.07.23 |
[Oracle] 오라클 테이블 컬럼 추가/수정/삭제/이름변경 하기(ALTER table ADD/MODIFY/DROP/RENAME) (0) | 2015.07.06 |
[Oracle] 오라클 Null값 변환/치환 NVL, NVL2 함수 사용 법 (0) | 2015.06.30 |
[Oracle] 오라클 Decode 함수 사용 법 (0) | 2015.06.30 |