1. Redo 기능

1) Database 복구를 목적으로 설계
Write ahead rule데이터를 변경(DDL, DML 등) 시키기 전에 반드시 리두를 먼저 생성
Log force at commit사용자가 커밋을 요청하면 반드시 관련된 데이터를 보장하고 인스턴스 장애 시에 성공적으로 리두 로그 파일로부터 데이터 복구를 함
2) Database에 적용된 모든 변경 사항에 대한 이력 저장
3) DML/DDL/Recursive SQL에 의해 변경된 모든 Data 이력(nologging 제외)
nologging 기능대량의 데이터 생성 시 nologging 기능을 사용하면 성능상 큰 개선을 볼 수 있음
참고 URLhttp://121.254.172.39:8080/pls/apex/f?p=101:11:0::::P11_QUESTION_ID:4909800346338423
4) DDL Text 저장(DML Text 제외)

2. LGWR에 의한 Redo 기록

1) Redo Buffer 내용을 Redo Log File에 기록하는 시점
매 3초 마다
Log Buffer의 1/3 또는 1MB가 저장될 때
User Process가 Commit 또는 Rollback으로 Transaction을 종료할 때(Log force at commit)
DBWR Process에 의해 신호를 받을 때(write ahead logging)Log Force at Commit : Transaction과 관련된 모든 Redo Record를 Log File에 저장 후 Commit 완료)
Write Ahead Log : Data Buffer에 기록하기 전에 Log Buffer에 먼저 기록Write Ahead Log : Data File에 기록하기 전에 Log File에 먼저 기록
2) 모든 프로세서는 리두 버퍼에 변경사항을 저장함
리두 페코드라는 단위로 데이터 변경사항을 저장함
리두 버퍼는 리두 레코드를 연속된 형태(SCN 순서)로 저장함
리두 버퍼가 꽉 차게 되면 다시 처음부터 레코드를 저장하는 순환구조 사용
3) 참고사항
  • LGWR가 리두 버퍼 내용을 리두 버퍼 로그에 기록하는 것을 백그라운드 기록이라 함
  • 백그라운드 기록의 기준이 되는 크기는 _LOG_IO_SIZE이며, 10g 기준 리두버퍼의 1/6임(9i는 1/3)
  • 리두 로그 파일은 리두 로그 블록 단위로 기록됨

SELECT MAX(LEBSZ)
FROM   SYS.XM$KCCLE;

MAX(LEBSZ)                     
----------                     
       512 

  • 오라클의 커밋은 커밋 순간의 SCN 까지는 복구를 보장하겠다는 의미

3. Sync Writes / Background Writes

1) Sync Writes
  • User Commit 또는 Rollback에 의해 발생함
  • log file sync Event는 Sync Writes에 의해서만 발생함
    ☞ log file sync 대기이벤트 : 서버 프로세스가 커밋 명령을 내린 후 LGWR가 성공적으로 기록할 때 까지 기다리게 됨.
    이 때 발생하는 이벤트이며, Sync Writes signal을 기다리고 있음을 의미

☞ Sync Writes signal : LGWR 프로세스가 로그 버퍼의 내용을 리두 로그 파일에 기록 완료 한 후에 유저 프로세스에게 전달하는 시그널

☞ log file sync 대기이벤트 원인

잦은 커밋
I/O 시스템 성능이 느린 경우
많은 리두의 양
리두 버퍼의 크기
2) Background Writes
  • Sync Writes를 제외한 나머지 경우에 발생함
  • 대량의 Redo Entries를 발생시키는 Server Process는 Redo Buffer의 공간을 할당 받기 위해 Background Writes를 요청함

문서에 대하여