by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

Redo




  1. Redo 로그

    • Redo 로그 버퍼에 저장된 로그 레코드가 Redo 로그 블록 단위(512 Byte)로 기록되는 파일
      • 최소 두 개 이상의 파일로 구성
      • 라운드 로빈 방식의 로그 스위칭
      • select max(lebsz) from sys.x$kccle; (로그 블록 단위 얻기)
  2. Redo 로그의 목적

    목적 설명
    Database(Media) Recovery 복구시 Archived Redo 로그 활용
    Cache(Instance) Recovery Roll forward / Rollback (Transaction Recovery)
    Fast Commit Commit 시 데이터 Block 쓰기 대신 Redo 쓰기 활용
    • Block 과 Redo 로그
      구분 쓰기방법 속도
      Block Random Access 느리다
      Redo 로그 Append 빠르다
    • Delayed Block Cleanout
      구분 기록내역
      Undo 세그먼트 헤더의 트랜잭션 테이블 Transaction Status
      블록 헤더 ITL 슬롯 커밋 Flag, 커밋 SCN
      Redo 로그 Commit Mark
  3. Redo 로그 쓰기

    • 관련자
      • LGWR
      • Redo 로그 버퍼
      • Redo 로그
    • 언제?
      • 3초마다 DBWR 프로세스로 부터 신호를 받을때
      • 로그 버퍼의 1/3이 차거나 기록된 Redo 레코드가 1MB를 넘을 때
      • 사용자가 커밋 또는 롤백 명령을 날릴 때 (Log Force at Commit)
        1. 커밋 (유저)
        2. 커밋 레코드를 Redo 로그 버퍼에 기록 (LGWR)
        3. 트랜잭션 로그 레코드와 함께 Redo 로그에 저장
        4. 커밋 완료
    • Write Ahead Logging
      영역 선(Redo 엔트리) 후(데이터 블록)
      SGA Redo 로그 버퍼에 기록 버퍼캐시의 데이터 블록 갱신
      디스크 Redo 로그에 기록(LGWR) Dirty 데이터 블록을 디스크에 기록(DBWR)
    • log file sync
      • LGWR 프로세스가 Redo 로그 버퍼의 Redo 엔트리를 Redo 로그에 기록 완료 할 때까지 발생 하는 대기 이벤트
  4. COMMIT_WRITE (파라미터)

    Redo Write 완료 대기 장애극복 비고
    IMMEDIATE, WAIT 즉각 요청 대기 O 기본값
    IMMEDIATE, NOWAIT 즉각 요청 대기 안함 X  
    BATCH, WAIT 모아서 요청 대기 X  
    BATCH, NOWAIT 모아서 요청 대기 안함 X  
    • PL/SQL 의 Asynchronous Commit
      • PL/SQL 블록 내의 Commit 은 마치 COMMIT_WRITE(BATCH, NOWAIT) 파라미터를 사용하는것과 같은 효과
    • _WAIT_FOR_SYNC = FALSE 시 COMMIT_WRITE(NOWAIT) 효과
    • _DISABLE_LOGGING = TRUE 시 Redo 로그에 기록하는것 만 패스 (위험한 파라미터)
  5. NOLOGGING

    • 그래도 Redo 레코드 발생 한다
      • Data Dictionary 변경 내역
      • 새로 할당된 Extent 상태 변경(Invalid) 내역

참조문서

블로그(오라클 성능 문제에 대한 통찰) : http://ukja.tistory.com/64
위키(엑셈과 만들어가는 오라클 백과사전) : http://wiki.ex-em.com/index.php/Delayed_block_cleanout
서적(오라클 성능 고도화 원리와해법 I) : http://book.daum.net/detail/book.do?bookid=KOR9788996246015

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.