1. h2. Redo 로그
    • h5. Redo 로그 버퍼에 저장된 로그 레코드가 Redo 로그 블록 단위(512 Byte)로 기록되는 파일
      • 최소 두 개 이상의 파일로 구성
      • 라운드 로빈 방식의 로그 스위칭
      • select max(lebsz) from sys.x$kccle; (로그 블록 단위 얻기)
  2. h2. Redo 로그의 목적
목적설명
Database(Media) Recovery복구시 Archived Redo 로그 활용
Cache(Instance) RecoveryRoll forward / Rollback (Transaction Recovery)
Fast CommitCommit 시 데이터 Block 쓰기 대신 Redo 쓰기 활용
    • h5. Block 과 Redo 로그
구분쓰기방법속도
BlockRandom Access느리다
Redo 로그Append빠르다
    • h5. Delayed Block Cleanout
구분기록내역
Undo 세그먼트 헤더의 트랜잭션 테이블Transaction Status
블록 헤더 ITL 슬롯커밋 Flag, 커밋 SCN
Redo 로그Commit Mark
  1. h2. Redo 로그 쓰기
    • h5. 관련자
      • LGWR
      • Redo 로그 버퍼
      • Redo 로그
    • h5. 언제?
      • 3초마다 DBWR 프로세스로 부터 신호를 받을때
      • 로그 버퍼의 1/3이 차거나 기록된 Redo 레코드가 1MB를 넘을 때
      • 사용자가 커밋 또는 롤백 명령을 날릴 때 (Log Force at Commit)
        1. 커밋 (유저)
        2. 커밋 레코드를 Redo 로그 버퍼에 기록 (LGWR)
        3. 트랜잭션 로그 레코드와 함께 Redo 로그에 저장
        4. 커밋 완료
    • h5. Write Ahead Logging
영역선(Redo 엔트리)후(데이터 블록)
SGARedo 로그 버퍼에 기록버퍼캐시의 데이터 블록 갱신
디스크Redo 로그에 기록(LGWR)Dirty 데이터 블록을 디스크에 기록(DBWR)
    • h5. log file sync
      • LGWR 프로세스가 Redo 로그 버퍼의 Redo 엔트리를 Redo 로그에 기록 완료 할 때까지 발생 하는 대기 이벤트
  1. h2. 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 로그에 기록하는것 만 패스 (위험한 파라미터)
  1. h2. 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