언두 테이블스페이스 크기 관리

2025. 2. 13. 00:03IT/Oracle

반응형

언두 테이블스페이스 기본 관리 원칙

1. 언두 테이블스페이스 크기 관리

  • 언두 테이블스페이스의 적절한 크기를 설정해야 합니다. 이는 시스템의 트랜잭션 크기와 동시 사용자 수에 따라 달라집니다.
  • 권장 크기는 일반적으로 트랜잭션 크기 × 동시 사용자 수 × 4입니다.

현재 언두 테이블스페이스 확인

SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb 
FROM dba_data_files 
WHERE tablespace_name LIKE 'UNDO%';

 

크기 조정

ALTER DATABASE DATAFILE '/path_to_undo_file/undotbs01.dbf' RESIZE 2G;

 

추가 데이터파일 추가

ALTER DATABASE 
ADD DATAFILE '/path_to_undo_file/undotbs02.dbf' SIZE 1G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;

 

2. 자동 확장 설정

언두 테이블스페이스를 자동 확장(AUTOEXTEND) 모드로 설정하면 트랜잭션 증가로 인해 언두 공간이 부족해지는 문제를 방지할 수 있습니다.

 

확인 및 설정

SELECT file_name, autoextensible 
FROM dba_data_files 
WHERE tablespace_name LIKE 'UNDO%';

-- 자동 확장 활성화
ALTER DATABASE DATAFILE '/path_to_undo_file/undotbs01.dbf' AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;

 

3.  언두 보존 기간 설정

언두 보존 기간(UNDO_RETENTION)은 오라클이 언두 데이터를 보존하려는 최소 시간을 설정합니다.
이 값을 적절히 설정하면 롤백과 읽기 일관성 문제를 방지할 수 있습니다.

 

확인 및 설정

SHOW PARAMETER undo_retention;

-- 기본값(900초)을 변경:
ALTER SYSTEM SET undo_retention = 1800;

 

활용 사례

  • OLTP 시스템: 짧은 UNDO_RETENTION 설정(예: 300~900초).
  • DSS/데이터웨어하우스: 긴 UNDO_RETENTION 설정(예: 3600초 이상)

언두 테이블스페이스 모니터링

1. 언두 사용량 확인

현재 언두 테이블스페이스의 사용량을 모니터링하여 충분한 공간이 확보되었는지 확인합니다.

SELECT tablespace_name, 
       file_name, 
       bytes/1024/1024 AS size_mb, 
       maxbytes/1024/1024 AS max_size_mb, 
       autoextensible 
FROM dba_data_files
WHERE tablespace_name LIKE 'UNDO%';

 

언두 사용량 분석

SELECT a.tablespace_name,
       b.status,
       SUM(a.bytes) / 1024 / 1024 AS used_mb
FROM dba_undo_extents a, v$rollstat b
WHERE a.segment_id = b.usn
GROUP BY a.tablespace_name, b.status;

 

2. 언두 알림 설정

언두 테이블스페이스 부족을 사전에 감지하려면 알림을 설정할 수 있습니다.

공간 임계값 설정

BEGIN
   DBMS_SERVER_ALERT.SET_THRESHOLD(
      metrics_id    => DBMS_SERVER_ALERT.TABLESPACE_USAGE,
      warning_level => 85,
      critical_level => 95,
      observation_period => 1,
      consecutive_occurrences => 3,
      instance_number => 1,
      object_type => DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,
      object_name => 'UNDOTBS1'
   );
END;
/

 

언두 테이블스페이스 문제 해결

1. 언두 테이블스페이스가 부족할 때

언두 공간이 부족하면 "ORA-30036: unable to extend segment in undo tablespace" 오류가 발생할 수 있습니다.

 

해결 방법

  1. 언두 테이블스페이스 확장
ALTER DATABASE DATAFILE '/path_to_undo_file/undotbs01.dbf' RESIZE 4G;

 

   2. 자동 확장 활성화

ALTER DATABASE DATAFILE '/path_to_undo_file/undotbs01.dbf' AUTOEXTEND ON;

 

2. 불필요한 언두 테이블스페이스 제거

 

기존 언두 테이블스페이스를 삭제하려면

  1. 새 언두 테이블스페이스 생성
CREATE UNDO TABLESPACE undotbs2 DATAFILE '/path_to_undo_file/undotbs2.dbf' SIZE 1G AUTOEXTEND ON;

 

  2. 새 언두 테이블스페이스 활성화

ALTER SYSTEM SET UNDO_TABLESPACE = undotbs2;

 

  3. 기존 언두 테이블스페이스 삭제

DROP TABLESPACE undotbs1 INCLUDING CONTENTS AND DATAFILES;

 

반응형