============================
CheckPoint와 LogSwitching ============================
1 체크포인트와 Log Switch
- 체크포인트는 DBWR가 SGA에 있는 모든 수정된 DataBase Buffer의 내용을 해당
DataFile에 기록하는것이며 로그스위치는 LGWR가 한 온라인 리두로그에 쓰는 것을
중지하고 다른 그룹에 쓰기 시작하는 Event 이다.
Oracle은 LogSwitch가 발생하고 LGWR이 쓰기를 시작할때마다 각 Online Redo Log
File에 log Sequence Number를 할당한다. 그 온러안 리두로그가 아카이브되면 Archive
된 파일은 그번호를 유지한다.
- 기본적으로 Oracle Instance는 각 Log Switch에서 Check Point를 취하며, 기본적으로 로
그스위치는 현재 온라인 리두로그 그룹이 꽉차면 자동으로 발생한다.
- DataBase CheckPoint간격설정
Log_CheckPoint_Interval : DataBase의 체크포인트가 로그스위치에서만 발생하도록하려면 값을
Online Redo Log File의 Size보다 크게 설정한다. 두개의 로그스위치사이에서
Check Point가 발생하게 하려면 Parameter값을 redo log file size보다 적게 준다.
Parameter 값은 Oracle Block이 아닌 OS Block수 임. 따라서 운영체제의 블록의 크기를 바이트 단위로 알아야 한다.
예를들면]
a. DataBase Instance의 전체 redo log file크기는 512k
b. OS Block Size는 512 Byte
c. CheclPoint는 리두로그파일의 반이 찼을 때 발생해야 한다면
512k/redo log file / 512byte/os block=약 1000 block/ redo log file
즉 Log_CheckPoint_Interval = 500
- Log_CheckPoint_TimeOut은 체크포인트가 로그스위치에서만 발생하도록 하려면 0, 추가
체크포인트가 두개의 로그스위치 사이에서 발생하도록 하려면 값을 Online Redo Log File
을 채우는 시간보다 짧은 간격으로 설정해야 한다.
- Log Switch를 강제로 시행하는 방법
a.로그스위치를 강제로 시행하면 현재 활성그룹을 비활성화 하고, 로그유지 관리 작업에
사용가능하도록 할수 있다. 예를들어 현재 활성그룹을 삭제하려 해도 비활성화 될 때 까지는 삭제할수 없다.
b.alter system switch log file;이라는 명령으로 시행
- 체크포인트 강제시행
a.alter system checkpoint;라는 명령을 사용하여 시행한다.
b.체크포인트대센 고속체크포인트를 사용하여 DBWR은 입출력당 더많은 수정된 DB
Buffer의 내용을 디스크에 기록할수 있다.
2 체크포인트 발생시기
- Log Switch가 일어날때 마다
- Log_CheckPoint_Interval,Log_CheckPoint_TimeOut Parameter의 값에의해 조정
- Online TableSpace의 백업이 시작될 때 그 TableSapce를 구성한는 DataFile에 대해
- 관리자가 TableSpace를 OffLine으로 설정할 경우 연관된 TableSpace의 온라인 DataFile만
CheckPoint발생한다.
- Instance종료(normal, immediate)시
- 강제로 실행(alter system checkpoint;)
3.체크포인트 처리기법
- 체크포인트가 발생할 때 체크포인트 백그라운드 CKPT는 온라인 Redo Log에 기록할 다
음 위치를 기억한다음 DBWR에게 SGA에 있는 수정된 DataBase Buffer를 디스크의
DataFile에 쓰라는 신호를 보낸다. 그런다음 CKPT는 최근의 체크포인트를 반영하도록
모든 제어파일과 데이터 파일헤더를 갱신한다.
- 체크포인트가 발생하지 않으면 DBWR는 새 데이터를 넣을 빈 Buffer를 얻기위해 LRU DataBase
Buffer를 디스크에 기록한다. 그러나 체크포인트가 진행되면 DBWR는 체크포인트와 진행되는 DB작업에
대한 Data를 데이터 파일에 기록한다. 또한 DBWR는 CheckPoint 작업을 위해 수정된 DataBase Buffer
수를 기록하고 필요할 때 마다 LRU Buffer 를 기록하며 체크포인트에 대한 Dirty Buffer에 기록하는
식으로 체크포인트가 완료될때까지 작업을 계속한다.
4.Redo Log File의 블록점검
- 체크섬을 사용하여 리두로그 파일의 블록을 점검하도록 구성이 가능하다.
- Log_Block_CheckSum을 TRUE로 설정할 경우 리두로그 블록 점검이 활성화됨. Default 는 False
- Archive를 시도하는 동안 Redo Log Block에서 훼손 부분을 발견하면 Oracle은 그룹의 다른 Member
에서 일기를 시도하며 모든 Member가 훼손되면 Archive가 불가능함
- 위의 경우와 같이 Redo Log중 훼손부분이 있다면 이를 지워 Archive가 가능하게 해야 할것이다.
Alter database clear unarchived logfile group 3;의 명령으로 훼손된 부분을 지울수 있다.(주
의:Archive되지않은 Redo Log를 지웠다면 DB를 BAckUp해야 한다.)
위에서 unarchived라는 Option을 사용한 이유는 Archive되지 않은 Redo Log이기 때문이다.
5.v$log, v$logfile, v$thread등의 View를 이용하여 온라인 리두로그에 관한 정보를 볼
수있다.(v$thread는 병렬서버용)
댓글 없음:
댓글 쓰기