본문 바로가기
Database/Oracle

[ORACLE] ORA-00016 : 공간 부족으로 인해 UNDO 세그먼트를 확장할 수 없습니다

by Papa Martino V 2025. 7. 19.
728x90

ORA-00016 오류는 Oracle 데이터베이스를 운영하는 관리자와 개발자에게 있어 빈번하지 않지만 발생했을 때 시스템 안정성과 트랜잭션 처리에 중대한 영향을 미칠 수 있는 치명적인 문제입니다. 이 글에서는 ORA-00016 오류의 정확한 원인, 발생 조건, 해결 방법과 예방 전략에 대해 실제 실무 경험을 바탕으로 전문적으로 설명합니다.

1. ORA-00016 오류란?

ORA-00016 오류 메시지는 다음과 같이 나타납니다:

ORA-00016: UNDO 세그먼트를 확장할 수 없습니다. 공간이 부족합니다.
  

이 오류는 일반적으로 UNDO 테이블스페이스가 꽉 차 확장을 할 수 없을 때 발생합니다. 이는 트랜잭션 처리 중 이전 데이터를 복원하거나 롤백하려는 시점에서 Oracle이 필요한 UNDO 공간을 확보하지 못했을 때 발생합니다.

2. 주요 원인 분석

  • UNDO 테이블스페이스 크기 부족: 트랜잭션이 많거나 대량 작업이 진행되는 경우, 설정된 크기를 초과하게 됨
  • 자동 확장 비활성화: UNDO 테이블스페이스가 자동 확장(AUTOEXTEND) 설정이 꺼져 있는 경우
  • 대용량 트랜잭션 처리: 한 번에 많은 데이터를 처리하는 경우, 기존 공간으로는 부족할 수 있음
  • UNDO_RETENTION 설정 미흡: 트랜잭션 보존 시간이 길게 설정되어 오래된 UNDO 블록이 남아 있는 경우

3. 실무에서의 사례

한 대기업의 고객관리 시스템에서 CRM 데이터를 일괄 업데이트하는 스크립트를 실행 중 ORA-00016 오류가 발생하였습니다. 확인 결과, UNDO 테이블스페이스가 2GB로 제한되어 있었으며, 자동 확장도 꺼져 있었습니다. 대용량 업데이트로 인해 UNDO 공간이 모두 소모되었고, 트랜잭션이 중단되며 시스템 전반에 영향을 미쳤습니다.

4. 해결 방법

해결 방법 SQL 명령어 비고
UNDO 테이블스페이스 크기 증가 ALTER DATABASE DATAFILE '/path/undo01.dbf' RESIZE 5G; 경로는 실제 환경에 따라 수정
자동 확장 활성화 ALTER DATABASE DATAFILE '/path/undo01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; 안정적 운영을 위해 권장
UNDO_RETENTION 조정 ALTER SYSTEM SET UNDO_RETENTION = 900; 단위: 초. 필요에 따라 증가 가능
대용량 트랜잭션 분할 - 한 번에 너무 많은 데이터를 처리하지 않도록 설계

5. 예방을 위한 모니터링 전략

  • UNDO 사용량 모니터링 쿼리:
    SELECT tablespace_name, file_name, autoextensible, bytes/1024/1024 AS size_mb
    FROM dba_data_files
    WHERE tablespace_name = 'UNDOTBS1';
          
  • Undo 세그먼트 활동 모니터링:
    SELECT segment_name, tablespace_name, status
    FROM dba_rollback_segs;
          
  • 모니터링 도구 연동: Oracle Enterprise Manager 또는 AWR 보고서를 통한 트렌드 분석

6. UNDO 설정 관련 요약 표

항목 기본값 권장값 조정 필요 조건
UNDO_RETENTION 900초 1800~3600초 대용량 트랜잭션 시
UNDO 테이블스페이스 크기 2GB 10GB 이상 트랜잭션량에 따라 동적 조정
AUTOEXTEND OFF ON (MAXSIZE 설정) 공간 자동 확보 필요 시

7. 결론

ORA-00016 오류는 단순히 UNDO 공간 부족 이상의 의미를 갖습니다. 이는 시스템의 트랜잭션 구조, 공간 정책, 트랜잭션 설계에 대한 재점검이 필요하다는 신호입니다. 정기적인 모니터링, 적절한 파라미터 조정, 트랜잭션 설계 개선을 통해 이 오류는 충분히 예방 가능하며, 이는 결국 더 안정적이고 확장성 있는 데이터베이스 시스템 운영으로 이어집니다.

출처

  • Oracle Database Documentation 19c – Automatic Undo Management
728x90