본문 바로가기
IT/Oracle DB

[Oracle] ORA-30036 : 세그먼트를 8만큼 실행 취소 테이블스페이스 'xxx'에서 확장할수 없음

by 직장인W군 2022. 1. 22.
728x90

■ 에러 메시지

 - ORA-30036 : 세그먼트를 8만큼 실행 취소 테이블스페이스 'UNDOTBS1'에서 확장할 수 없음

 


 

■ 문제 원인

 - 실행 중인 쿼리의 데이터양이 많아 UNDO 데이터의 양이 UNDOTBS를 초과하여 발생
   (UNDOTBS TableSpace 용량이 부족)


■ 처리 방법

 1. UNDOTBS1 TableSpace datafile 추가
 2. UNDOTBS1 TableSpace 비우기

 


 

■ 해결 방법 2가지

 

방법1) UNDOTBS1 테이블스페이스 datafile 추가

 1) 테이블스페이스 경로 확인

SELECT * FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'UNDOTBS1';

 


 

 2) Datafile 추가

ALTER TABLESPACE UNDOTBS1 ADD DATAFILE 'D:/oracle/oradata/orcl/UNDOTBS02.dbf' SIZE 10G;

 


 

 3) 확인

SELECT * FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'UNDOTBS1';

 


 

방법2) UNDOTBS1 테이블스페이스 비우기

 1) 임시 테이블스페이스 생성 (UNDOTBS2)

CREATE UNDO TABLESPACE UNDOTBS DATAFILE 'D:/oracle/oradata/orcl/UNDOTBS02.dbf' SIZE 1G;

 


 

 2) UNDOTBS 테이블스페이스를 임시 테이블스페이스로 변경 (UNDOTBS2)

ALTER SYSTEM SET UNDO_TABLESPCE = UNDOTBS2;

 


 

 3) 기존 UNDOTBS1 테이블스페이스 삭제 (UNDOTBS1)

DROP TABLESPACE UNDOTBS INCLUDING CONTENTS AND DATAFILES;

 


 

 4) 기존 UNDOTBS1 테이블스페이스를 재생성 (UNDOTBS1)

CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE 'D:/oracle/oradata/orcl/UNDOTBS01.dbf' SIZE 10G;

 


 

 5) UNDOTBS 테이블스페이스를 재생성한 테이블스페이스(UNDOTBS1)로 변경

ALTER SYSTEM SET UNDO_TABLESPCE = UNDOTBS1;

 


 

 6) 임시 테이블스페이스(UNDOTBS2) 삭제

DROP TABLESPACE UNDOTBS2 INCLUDING CONTENTS AND DATAFILES;

 

 


 

반응형

댓글