반응형
ORA-30036: Unable to extend segment in undo tablespace
ORA-30036 오류는 UNDO 테이블스페이스가 가득 차서 새로운 UNDO 데이터를 저장할 수 없을 때 발생합니다.
오류 원인
ORA-30036 오류는 다음과 같은 원인으로 인해 발생할 수 있습니다:
- UNDO 테이블스페이스 부족: - UNDO 테이블스페이스가 자동 확장되지 않거나, 사용 가능한 공간이 부족합니다.
- 대형 트랜잭션 실행: - 많은 데이터를 변경하는 대형 트랜잭션이 발생하여 UNDO 공간이 급격히 증가할 수 있습니다.
- UNDO 테이블스페이스 AUTOEXTEND 비활성화: - UNDO 테이블스페이스가 자동 확장되지 않도록 설정되어 있다면 공간 부족 문제가 발생할 수 있습니다.
- UNDO_RETENTION 값이 너무 큼: - 오래된 UNDO 데이터를 유지해야 하는 설정이 적용되어 있어 UNDO 공간이 빠르게 채워질 수 있습니다.
해결 방법
ORA-30036 오류를 해결하기 위해 다음 단계를 수행할 수 있습니다:
- 현재 UNDO 테이블스페이스 확인: UNDO 테이블스페이스의 사용량을 확인합니다.
SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb, autoextensible FROM dba_data_files WHERE tablespace_name = 'UNDOTBS1';
- UNDO 테이블스페이스 확장: UNDO 테이블스페이스 크기를 수동으로 늘립니다.
또는 새로운 UNDO 데이터파일을 추가합니다.ALTER DATABASE DATAFILE '/u01/oradata/ORCL/undotbs01.dbf' RESIZE 2G;
ALTER DATABASE ADD DATAFILE '/u01/oradata/ORCL/undotbs02.dbf' SIZE 1G AUTOEXTEND ON;
- AUTOEXTEND 활성화: UNDO 테이블스페이스의 자동 확장을 활성화하여 공간 부족을 방지합니다.
ALTER DATABASE DATAFILE '/u01/oradata/ORCL/undotbs01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
- UNDO_RETENTION 값 조정: UNDO 데이터 보존 시간을 줄여 공간을 확보할 수 있습니다.
ALTER SYSTEM SET UNDO_RETENTION = 900;
- 대형 트랜잭션 분할: 대량의 데이터를 변경하는 경우, 여러 개의 작은 트랜잭션으로 나누어 실행합니다.
간단 요약
- ORA-30036 오류는 UNDO 테이블스페이스 공간이 부족할 때 발생합니다.
- 해결 방법: - UNDO 테이블스페이스 크기 확인 (`SELECT tablespace_name, bytes FROM dba_data_files`) - UNDO 테이블스페이스 확장 (`ALTER DATABASE DATAFILE RESIZE`) - AUTOEXTEND 활성화 (`ALTER DATABASE DATAFILE AUTOEXTEND ON`) - UNDO_RETENTION 값 조정 (`ALTER SYSTEM SET UNDO_RETENTION = 900`) - 대형 트랜잭션을 작은 단위로 분할
반응형