//구글광고

Redo log 란?

- 오라클 데이터베이스에서 일어나는 모든 변화를 기록하는 파일이다.
- 최소 2그룹 1멤버의 구성이 필요하다.

오라클 redo log 파일은 오라클 데이터베이스에서 일어나는 모든 입력, 수정, 삭제 와 같은 트랜젝션이 발생할 경우
변경되는 내용을 벡터 형태로 기록하는 파일로써 오라클 데이터베이스의 트랜젝션 속도에 매우 영향을 미치는 중요한 파일이며
redo 라는 이름에서 알수 있듯이 복구를 위해 사용되는 파일이다.

redo log 파일은 일정 공간을 할당해 놓고 재사용하는 파일이며, 온라인백업(Online backup 혹은 Hot Backup) 을 위해 Archive log 모드로
데이터베이스를 운영하면 재사용되는 시점의 redo log  파일이 Archive log 파일로 복사된다.

데이터베이스의 모든 변경내역이 벡터 형태로 저장되기 때문에 Archive log 파일의 이빨이 빠지면 이빨 빠진데 까지만 복구된다는 말이 있는데,
이는 redo log 파일의 특징 때문이다.


관련뷰(view)

v$log
v$logfile



관리포인트

checkpoint not complete. 메세지가 자주 일어나는 경우 redo log 파일 크기를 키우거나 늘려주면 해결될 수 있다.

모든 데이터베이스 I/O 의 시작이므로 redo log 파일의 위치는 빠른 디스크에 두는 것이 좋다.

그룹당 멤버를 여러개 둘 수 있다. 멤버라는 것은 복사본이다. redolog 가 깨지면 데이터의 불완전 복구밖에 할 수 없기 때문에

중요한 부분이라 여러개의 복제본을 둔다. (보통은 2개정도 )

관련 명령어

alter database switch logfile;   // 강제 로그 스위치를 일으킨다. 

alter system checkpoint;


리두로그 그룹 추가 

alter database add logfile group 4
('/db/redo04.log','/db2/redo04.log') size 200m;

리두로그 그룹 삭제 

alter database drop logfile group 4;



추가와 삭제는 온라인 중에 가능하지만

관련뷰를 조회 해서 current 혹은 active 상태면 삭제할 수 없다.


새로운 그룹을 추가한다음에 alter system switch log file; 해서 로그 스위치를 일으킨 다음에

삭제하거나 그래도 사용중이라고 뜨면 checkpoint 를 발생시킨뒤 삭제하면 된다.


튜닝포인트

redo log 관련하여 성능의 개선이 되는지 여부를 확인하는 방법은 sysstat 에서 Execution 의 수를 비교해보면 알 수 있다.

예를들어 redo log 파일을 20메가로 했을경우와 극단적으로 20g를 했을 경우 트랜젝션이 밀집되는 시간에 redo log 파일의 크기를 변경해놓고

execution 수를 비교해보면 차이가 눈에 확 나타난다, 단 리두로그 파일의 크기가 커지면 check point 시의 시간이 오래걸리고

중간에 데이터베이스의 장애시 redo log 파일이 손상될 경우 증발되는 데이터가 커지기 때문에 주의를 요한다.

디스크중에 가장 빠른곳에 약간의 공간을 잡아서 redo log 파일을 배치해 두면 트랜젝션에서의 속도 향상을 체감 할 수 있다.


관련 장애 케이스

보통 데이터베이스에 redo01.log redo02.log 이렇게 생성해놓기 떄문에 윈도우 서버의 경우 드물게 정리 프로그램을 사용하여 log 파일을
전체 삭제 해버리는 경우가 발생할 수 있다. 보통은 지워지지 않으나(사용중이기 떄문에) 드물게 지워져서 장애를 유발하는 경우가 있어
일부는 redo01.rdo 형태로 파일명을 생성해 놓기도 한다.

linux , unix 등의 환경에서 개발자가 소스프로그램이나 import 데이터등을 업로드할때 공간이 부족해 보여서 log니까 지워도 상관없겠지 해서
지우는 경우도 간혹 발생한다.

현제 current redo log 를 삭제할 경우 현재 시점으로 복구는 불가능하니까 주의한다.


+ Recent posts