6-2. Redo Log File 구성 및 관리하기. 



Redo Log File 구성 및 관리하기


1) Redo Log Buffer와 Redo Log File

 



- Redo Log File은 그룹과 멤버라는 개념으로 관리됨.

- Oracle 7 버전 이후부터 같은 내용을 여러곳에 중복으로 저장하는 그룹이란 개념이 등장

- 위 그림은 Redo Log Group 3개가 있고, Member 로 2개씩 존재하는 구성

- 같은 그룹의 Member 들은 같은 내용을 담고있다.

- Member를 많이 추가하면 안정적일 수는 있지만, 기록시간이 커서 부하를 줄 수 있으므로 구성을 잘 해야한다.

- 같은 그룹의 멤버는 서로 다른 디스크에 저장되는것을 권장한다.


* 오라클에서 최소 그룹의 개수는 2개이며, 그룹별로 필요한 최소 Member 갯수는 1개다.

* *  장애를 대비하여 그룹은 최소 3개와 각 그룹별 최소 2개이상의 Member 구성을 권장함.

- LGWR이 Redo Log Buffer의 내용을 Redo Log File에 내려쓰다가 해당 파일이 가득 차게되면 Log Switch가 발생하여 자동으로 다음 그룹으로 넘어가게된다.

 * Log Switch가 발생하게 되면 Checkpoint 신호가 발생하게된다.

=> Check point 신호 발생 시 DBWR은 해당 로그파일에 있는 내용 중 DB Buffer Cache에서 데이터파일로 저장되지 못한 변경사항을 내려쓰게 되며, 이 정보들을 Data file과 Control file에 반영된다.

- 다음 그룹역시 가득 찰 경우 다음 Redo Log 그룹으로 넘어간다.

* Log Switch가 일어나는 그룹의 순서는 Oracle이 라운드 로빈 방식으로 결정하게된다.

(1번 그룹 다음 2번그룹이 아니라 3번일 수 있다는 뜻.)

- 같은 그룹 안의 Member들 끼리는 서로 저장하고 있는 내용과 크기가 동일하다.

- LGWR은 Redo Log File의 그룹의 멤버가 여러 개일 경우 병렬로 동시에 같은 내용을 기록한다.

(같은 디스크에 있을 경우 하나 기록후 끝나고 하나 기록하는 식의 직렬로 기록) 

* 병렬쓰기 도중 Redo Log File이 삭제되었다든지 Block에 문제가 생겼다든지 문제가 생길 경우 LGWR은 각 오픈 로그 멤버의 상태를 조사해서 어떤 파일이 에러가 발생되는지 알아낸다.

 장애가 난 멤버는 Control File의 STALE이라는 상태로 기록하고, LGW은 Trace file에 ORA-00346에러를 기록한다.

- LGWR이 하나의 로그파일에서 4개이상의 에러를 만나게 되면 로그파일을 닫고 더이상 그 파일에 내용을 기록하지 않는다. 만약 LGWR이 어떤 로그 파일에도 내용을 기록할 수 없다면 ORA-00340 에러를 발새시키고Shutdown abort로 강제종료되고 Startup되지 않는다.


** Redo Log file 크기는 각 서버에 맞게 사용해야하며, Redo Log File크기가 너무 작을 경우 LOG SWITCH가 자주 발생하게되어 성능저하가 될 수 있고, 너무 크면 데이터의 손상 가능성이 커지므로 설정을 잘해야한다.

 보통  1시간에 Log Switch가 2~3회 발생하게 설정하는 것을 추천하지만, 서버실정에 맞게 설정해야한다.

** Alert Log File에 checkpoint not completed 메세지가 나오면 Redo Log File 크기나 그룹의 개수가 작다는 의미로 멤버 크기를 크게 만들거나, 그룹을 더 만들어주어야한다.

** checkpoint not completed 메세지는 Log Switch가 너무 빈번하게 일어날 경우 DBWR이 이전에 발생한 Check point 내용을 Data file에 다 기록을 못한 상태에서 다시 Log Switch가 발생하여 checkpoint 신호가 들어올 경우 발생한다.