[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 process가 DB buffer cache에서 필요한 데이터 확인 (DML수행원리확인)
③ page fix(해당블록 Lock) ④ PGA에서 redo change vector생성 : redo log buffer에 기록할 변경된 데이터 모든정보
⑤ redo log buffer에 필요한 용량 계산
⑥ redo copy latch : PGA에서 생성된 redo change vector를 redo 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 vector를 redo entry라고함)
⑨ 특정상황발생시 (3초마다, 1/3찼을 때, 1M찼을 때, commit, rollback발생, DBWR요청)
⑩ redo writing latch 확보 후 LGWR에게 redo log file에 기록요청
2. redo log file 구성
- redo log file의 같은 그룹의 경우 member들은 같은 내용을 담고 있어서 하나의 멤버 삭제 시 장애예방가능
- 같은 디스크에 각각 다른그룹의 멤버생성
- 오라클 최소사항 : group 2개 member 1개 / 권장사항 : group 3개 member 2개이상
log switch : redo log buffer의 내용을 redo log file이 가득차면 다음그룹으로 넘어가는과정, checkpoint 발생 check point : DBWR이 파일로 저장, control file과 data file에 SCN등의 정보기록 |
- log switch가 일어나는 그룹의 순서는 oracle이 round 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을 설치하였다면 member와 group삭제시 control file에서 명단만 삭제 실제 해당 파일은 존재하므로 사용자가 직접 해당 경로에 해당 파일을 DBA가 OS명령어로 수동으로 지워줘야함 ASM기반으로 oracle을 설치했다면 alter database drop logfile member/group으로 명단+파일 삭제 |
* redo log file 상태 current : LGWR이 redo log file에 기록중인 상태 active : redo log file의 내용이 아직 DB buffer cache에서 data file로 저장이 안되서 지워지면 안되는 상태 inactive : redo log file의 내용이 data file에 저장이 완료되어 지워져도 되는상태 |
'oracle > [Admin] 이론' 카테고리의 다른 글
[정리] Redo Log, Control, Data File 관리하기 (2) | 2014.10.22 |
---|---|
[이론] chapter 07. Tablespace / Data File 관리 (0) | 2014.10.21 |
[이론] chapter 05. Control File 관리하기 (0) | 2014.10.20 |
[이론] chapter 04. Oracle 시작하기 & 종료하기 (0) | 2014.10.20 |
[이론] chapter 03. Oracle Background Process (0) | 2014.10.20 |
댓글