오라클 데이터베이스에서 UNDO 테이블스페이스의 용량을 확인하고 관리하는 방법은 여러 가지가 있습니다. 아래에서는 UNDO 테이블스페이스 용량을 확인하는 방법과 용량 부족 시에 취할 수 있는 조치 방법에 대해 설명합니다.
1. UNDO 테이블스페이스 용량 확인 방법
1.1 DBA_DATA_FILES 뷰를 사용하여 UNDO 테이블스페이스 크기 확인
DBA_DATA_FILES 뷰를 사용하면 UNDO 테이블스페이스 파일의 크기 정보를 확인할 수 있습니다.
SELECT tablespace_name, file_name, bytes / 1024 / 1024 AS size_mb, autoextensible, maxbytes / 1024 / 1024 AS max_size_mb
FROM dba_data_files
WHERE tablespace_name = 'UNDOTBS1'; -- 'UNDOTBS1'는 실제 UNDO 테이블스페이스 이름- tablespace_name: 테이블스페이스 이름
- file_name: 데이터 파일의 이름과 경로
- size_mb: 현재 테이블스페이스 크기(MB)
- autoextensible: 자동 확장 여부
- max_size_mb: 자동 확장이 가능할 경우 최대 크기(MB)
1.2 DBA_FREE_SPACE 뷰를 사용하여 UNDO 테이블스페이스의 남은 용량 확인
DBA_FREE_SPACE 뷰를 사용하여 UNDO 테이블스페이스의 남은 공간을 확인할 수 있습니다.
SELECT tablespace_name, SUM(bytes) / 1024 / 1024 AS free_space_mb
FROM dba_free_space
WHERE tablespace_name = 'UNDOTBS1'
GROUP BY tablespace_name;이 쿼리는 UNDO 테이블스페이스의 남은 자유 공간을 MB 단위로 보여줍니다.
1.3 V$UNDOSTAT 뷰를 사용하여 UNDO 사용량 추세 확인
V$UNDOSTAT 뷰를 사용하여 UNDO 테이블스페이스의 사용량 추세와 트랜잭션 관련 정보를 확인할 수 있습니다
SELECT begin_time, end_time, undoblks, maxquerylen, txncount
FROM v$undostat
ORDER BY begin_time DESC;- undoblks: UNDO 블록 수
- maxquerylen: 가장 긴 쿼리 시간(초)
- txncount: 해당 시간 동안의 트랜잭션 수
이 정보는 UNDO 사용 추세를 분석하는 데 도움이 됩니다.
2. UNDO 테이블스페이스 용량 부족 시 조치 방법
2.1 UNDO 테이블스페이스 크기 확장
UNDO 테이블스페이스의 크기가 부족하면 데이터 파일을 확장하여 용량을 늘릴 수 있습니다.
2.1.1 자동 확장 설정 (AUTOEXTEND)
UNDO 테이블스페이스의 데이터 파일에 AUTOEXTEND 옵션을 설정하여 필요할 때 자동으로 크기가 늘어나도록 설정할 수 있습니다.
ALTER DATABASE DATAFILE '/path_to_undo_tablespace/undotbs01.dbf'
AUTOEXTEND ON
NEXT 50M MAXSIZE UNLIMITED;- NEXT 50M: 데이터 파일이 확장될 때 한 번에 50MB씩 증가
- MAXSIZE UNLIMITED: 최대 크기를 무제한으로 설정 (제한을 두고 싶다면 MAXSIZE를 MB 또는 GB 단위로 설정)
2.1.2 수동으로 UNDO 테이블스페이스 크기 확장
자동 확장이 아닌 수동으로 데이터 파일 크기를 늘리려면 다음 명령어를 사용할 수 있습니다.
ALTER DATABASE DATAFILE '/path_to_undo_tablespace/undotbs01.dbf' RESIZE 2G;2.2 UNDO_RETENTION 설정 조정
UNDO 용량 부족은 UNDO 테이블스페이스에 보관되는 데이터의 보존 시간(UNDO_RETENTION)과 관련이 있을 수 있습니다. 보존 시간을 줄이면 UNDO 테이블스페이스의 사용량을 줄일 수 있습니다.
ALTER SYSTEM SET UNDO_RETENTION = 900;
- UNDO_RETENTION 값을 초 단위로 설정하며, 위의 예시는 900초(15분)를 의미합니다.
- 너무 짧게 설정하면 트랜잭션 롤백이 필요할 때 필요한 UNDO 데이터를 사용할 수 없을 수 있으므로, 적절한 값으로 설정해야 합니다.