SW/Database / / 2025. 2. 9. 13:50

ORA-30036: Unable to extend segment in undo tablespace / 원인과 해결 방법

반응형

ORA-30036: Unable to extend segment in undo tablespace

ORA-30036 오류는 UNDO 테이블스페이스가 가득 차서 새로운 UNDO 데이터를 저장할 수 없을 때 발생합니다.

 

 

ORA-30036: Unable to extend segment in undo tablespace / 원인과 해결 방법

 

 

오류 원인

ORA-30036 오류는 다음과 같은 원인으로 인해 발생할 수 있습니다:

  1. UNDO 테이블스페이스 부족: - UNDO 테이블스페이스가 자동 확장되지 않거나, 사용 가능한 공간이 부족합니다.
  2. 대형 트랜잭션 실행: - 많은 데이터를 변경하는 대형 트랜잭션이 발생하여 UNDO 공간이 급격히 증가할 수 있습니다.
  3. UNDO 테이블스페이스 AUTOEXTEND 비활성화: - UNDO 테이블스페이스가 자동 확장되지 않도록 설정되어 있다면 공간 부족 문제가 발생할 수 있습니다.
  4. UNDO_RETENTION 값이 너무 큼: - 오래된 UNDO 데이터를 유지해야 하는 설정이 적용되어 있어 UNDO 공간이 빠르게 채워질 수 있습니다.

해결 방법

ORA-30036 오류를 해결하기 위해 다음 단계를 수행할 수 있습니다:

  1. 현재 UNDO 테이블스페이스 확인: UNDO 테이블스페이스의 사용량을 확인합니다.
    SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb, autoextensible
    FROM dba_data_files
    WHERE tablespace_name = 'UNDOTBS1';
  2. UNDO 테이블스페이스 확장: UNDO 테이블스페이스 크기를 수동으로 늘립니다.
    ALTER DATABASE DATAFILE '/u01/oradata/ORCL/undotbs01.dbf' RESIZE 2G;
    또는 새로운 UNDO 데이터파일을 추가합니다.
    ALTER DATABASE ADD DATAFILE '/u01/oradata/ORCL/undotbs02.dbf' SIZE 1G AUTOEXTEND ON;
  3. AUTOEXTEND 활성화: UNDO 테이블스페이스의 자동 확장을 활성화하여 공간 부족을 방지합니다.
    ALTER DATABASE DATAFILE '/u01/oradata/ORCL/undotbs01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
  4. UNDO_RETENTION 값 조정: UNDO 데이터 보존 시간을 줄여 공간을 확보할 수 있습니다.
    ALTER SYSTEM SET UNDO_RETENTION = 900;
  5. 대형 트랜잭션 분할: 대량의 데이터를 변경하는 경우, 여러 개의 작은 트랜잭션으로 나누어 실행합니다.

간단 요약

  • 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`) - 대형 트랜잭션을 작은 단위로 분할
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유