ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 공간을 효율적으로 사용해야 함.

     

    반응형
Designed by Tistory.