IT/Oracle DB
[Oracle] ORA-30036 : 세그먼트를 8만큼 실행 취소 테이블스페이스 'xxx'에서 확장할수 없음
직장인W군
2022. 1. 22. 09:00
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;
반응형