-
[oracle] manage undo data카테고리 없음 2024. 12. 19. 16:47
undo data 란?
- 트랜잭션 처리의 일관성 유지
트랜잭션이 수행된 변경 내용을 저장하고, 트랜잭션이 롤백될 때 해당 변경 사항을 되돌리는 데 사용됨 - 롤백 및 복구 작업
시스템 크래시나 장애 발생 시, Oracle은 Undo 데이터를 사용하여 트랜잭션을 복구함
장애 발생 후 시스템을 재시작하면 Oracle은 Undo 데이터를 이용하여 일관성을 회복함 - 읽기 일관성을 보장
다중 트랜잭션이 동시에 실행될 때, 각 트랜잭션에 대해 일관성 있는 데이터를 제공하기 위해 Undo 데이터를 사용함 이를 통해, 하나의 트랜잭션이 데이터를 수정하는 동안 다른 트랜잭션은 수정 전 데이터를 조회할 수 있음
Undo Tablespace
Undo 데이터는 Undo Tablespace라는 특별한 테이블스페이스에 저장됨
이 테이블스페이스는 데이터베이스의 물리적 공간으로, Oracle이 트랜잭션의 변경을 추적하고 롤백을 수행하는 데 필요한 공간을 제함
- Undo Tablespace 생성
CREATE TABLESPACE undotbs DATAFILE '/path_to_file/undotbs01.dbf' SIZE 1G;
- Undo Tablespace 변경
ALTER DATABASE DATAFILE '/path_to_file/undotbs01.dbf' RESIZE 2G;
- Undo Tablespace 상태 확인
SELECT tablespace_name, file_id, file_name, bytes, blocks
FROM dba_data_files
WHERE tablespace_name = 'UNDOTBS';
Undo 데이터 크기 설정
UNDO_RETENTION 값은 최소한의 Undo 데이터를 보유하는 시간 설정
ex)
ALTER SYSTEM SET undo_retention = 3600; -- 1시간 동안 Undo 데이터 유지
undo_retention = 30sec
600/600sec
1/sec
required_undo_size(900)
등등 설정 가능
Undo 사용과 최적화
- 자동커밋
자동 커밋(autocommit) 모드에서 트랜잭션이 빠르게 종료되므로 Undo 데이터가 빠르게 회수됨
하지만, 큰 트랜잭션을 처리할 때는 Undo 테이블스페이스가 빠르게 가득 찰 수 있음
큰 트랜잭션이 많이 발생하는 환경에서는 Undo 테이블스페이스의 크기를 적절히 늘려야 함 - 대용량 데이터 처리
대량의 데이터를 처리할 때 Undo 공간이 부족하면 성능 저하나 트랜잭션 롤백 실패가 발생할 수 있음
이럴 때는 UNDO_RETENTION 값을 늘리거나, 대량 데이터 삽입 작업 중에는 적절한 커밋 주기를 설정하여 Undo 공간을 효율적으로 사용해야 함.
반응형 - 트랜잭션 처리의 일관성 유지