본문 바로가기
oracle/[Admin] 이론

[이론] chapter 06. Redo Log 관리

by #moonyz 2014. 10. 20.

[Redo log file 관리하기]

- 데이터에 변경이 생길 경우 만약의 장애를 대비해서 변경되는 내용을 기록해둠

- write log ahead : redo log부터 기록

- log force at commit : redo log file에 기록을 완료한 후 commit이 완료됨

(대량데이터변경시를 위해 delayed commit, group commit 기술 등장)

- 동기식커밋 : redo log 기록 완료 후 DBWR이 데이터를 기록하는 방식

- 비동기식커밋 : 10g R2부터 등장한 기술로, 동기식커밋의 성능문제 때문에 나온 기술

 

1. redo log 생성원리

변경쿼리요청 -> server processDB buffer cache에서 필요한 데이터 확인 (DML수행원리확인)

page fix(해당블록 Lock) PGA에서 redo change vector생성 : redo log buffer에 기록할 변경된 데이터 모든정보

redo log buffer에 필요한 용량 계산

redo copy latch : PGA에서 생성된 redo change vectorredo log buffer에 복사하기위해 필요한 latch

redo allocation latch : 8i까지 redo allocation latch 1, 속도저하 -> shared redo strand기능도입

shared redo strand : redo log buffer를 여러개의 공간으로 나누어서 공간마다 latch 부여(파티션)

redo log buffer에 기록완료 (redo log buffer에 기록된 change vectorredo entry라고함)

특정상황발생시 (3초마다, 1/3찼을 때, 1M찼을 때, commit, rollback발생, DBWR요청)

redo writing latch 확보 후 LGWR에게 redo log file에 기록요청

2. redo log file 구성

- redo log file의 같은 그룹의 경우 member들은 같은 내용을 담고 있어서 하나의 멤버 삭제 시 장애예방가능

- 같은 디스크에 각각 다른그룹의 멤버생성

- 오라클 최소사항 : group 2member 1/ 권장사항 : group 3member 2개이상

log switch : redo log buffer의 내용을 redo log file이 가득차면 다음그룹으로 넘어가는과정, checkpoint 발생

check point : DBWR이 파일로 저장, control filedata fileSCN등의 정보기록

- log switch가 일어나는 그룹의 순서는 oracleround robin방식으로 결정 (순서랜덤)

- 그룹의 멤버가 여러개일 경우 병렬(동시에 같은내용을 기록) / 같은디스크에 있으면 직렬(순차적으로기록)

- 장애멤버 발생시 control file안에 stable상태로 기록 / 하나의 로그파일에서 4개이상 에러발생시 해당파일사용중단

- LGWR이 어떤 로그파일에도 내용을 기록할수 없게되면 ORA-00340에러발생 후 shutdown abort, startup불가

- log file크기가 작을경우->log switch가 자주 발생, 성능저하/ log file크기가 클 경우->데이터의 손상 가능성이 커짐

- ‘checkpoint not completed.' 메시지 발생은 redo log file의 크기나 그룹갯수가 작은 경우

(DBWR이 이전에 checkpoint 내용을 디스크에 기록을 다하기 전에 checkpoint신호가 또 들어올 경우)

 

3. redo log file 관리

- 신규group생성 : alter database add logfile group 4 '/app/oracle/oradata/testdb/redo04_a.log' size 5M;

- member추가 : alter database add logfile member '/app/oracle/oradata/testdb/redo04_b.log' to group 4;

- member삭제 : alter database drop logfile member '/app/oracle/oradata/testdb/redo04_b.log';

- group삭제 : alter database drop logfile group 4;

- 강제 logswitch 발생 : alter system switch logfile;

- 강제 checkpoint 발생 : alter system checkpoint;5

ASM기반이아닌 OS파일시스템으로 oracle을 설치하였다면 membergroup삭제시 control file에서 명단만 삭제

실제 해당 파일은 존재하므로 사용자가 직접 해당 경로에 해당 파일을 DBAOS명령어로 수동으로 지워줘야함

ASM기반으로 oracle을 설치했다면 alter database drop logfile member/group으로 명단+파일 삭제

* redo log file 상태

current : LGWRredo log file에 기록중인 상태

active : redo log file의 내용이 아직 DB buffer cache에서 data file로 저장이 안되서 지워지면 안되는 상태

inactive : redo log file의 내용이 data file에 저장이 완료되어 지워져도 되는상태



댓글