본문 바로가기
개발 이야기/개발자 이야기

[데이터베이스] 오라클 ORA-30036 에러 해결 (새그먼트를 8만큼 실행취소 테이블스페이스 'UNDOTBS1'에서 확장할 수 없음)

by 런던살자 2019. 2. 1.

안녕하세요 마블랑입니다.


이번에 업무관련하여 오라클 데이터베이스에 쿼리문을 실행하다 에러가 발생하였습니다.


쿼리를 실행하였을때 처리되는 데이터 양이 너무 많아 두시간 좀 넘게 걸렸었는데 실행은 되지않고 에러문만 출력되는 군요...


출록된 에러문은 ORA-30036으로 "새그먼트를 8만큼 실행취소 테이블스페이스 'UNDOTBS1'에서 확장할 수 없음" 이라는 메시지도 함께 출력이 되었습니다.


무슨말인지 전혀 몰라서 에러코드를 구글링 해본결과 간단히 설명하자면 한번에 실행되는 쿼리의 데이터양이 너무 많아 메모리가 부족하여 더이상 실행할 수 없다고 설명드릴수 있겠습니다.

(데이터베이스의 내부적 동작에 대해서는 잘 알지 못하여 간단하게 설명드렸습니다~)


두시간이나 걸려서 에러코드를 받았는데 아마 쿼리가 잘못된거였으면 시작하자마자 에러가 표시되지 않았을까 생각합니다


그래서 아마 실행도중 다른문제때문에 에러가 발생한다고 추측을 할수 있었습니다~



그래서 방금 발생한 에러를 해결하기 위해서는 테이블 스페이스라는 영역을 확장 시켜야 하는데 데이터베이스를 잘 알지 못하기때문에 작업이 뭔가 복잡해 보입니다.


그래서 다른 방법을 찾아보았는데 첫번째 방법보다 훨씬 간단한 방법으로 조건문를 추가하여 쿼리를 쪼개서 실행하면 자연스럽게 해결되는 에러라고 말하고 싶군요~


조건문을 통해 날짜컬럼이 있다면 기간을 나누고 고유의 ID가 있다면 범위로 나누던가 아니면 특정한 구분자가 있으면 그 구분자로 나눠서 쿼리를 실행해주시면 되겠습니다.


이런 오라클에러는 처음 겪어봐서 에러코드만 확인하는데듀 두시간이 넘게 소요되었습니다 ㅠㅠ


다음부터는 이런일이 발생하지 않도록 데이터양을 확인하고 진행을 하려고 합니다^^


참고로 데이터양은 1억건이었는데 참고하셔서 작업하는데 도움이 되었으면 좋겠습니다



이상 마블랑이었습니다. 읽어주셔서 고맙습니다

댓글