리두로그 파일
ㄴ 어느 한 부분의 장애로 인한 데이터베이스 정보의 손실을 막을 수 있는거
풀백업 : 이전시점으로 돌아가지 않아도 될때 사용.
백업 할때 : 특정시점에서 데이터가 완전 무결하기때문에 전으로 돌아갈필요가 없어요 할때
니드로그는 사용을 그룹단위로 한다.
최소한의 그룹은 3개 ,맴버는 그룹당 2개씩
ㄴ 한 그룹에서만 사용이 가능하다.
그룹안에 멤버는 미러셋이다. → 날라가면 큰일나기 때문에.
같은그룹 있는 멤버는 다른 디스크에 있어야 한다.
그룹간에 멤버의 개수는 차이가 있으면 안된다.
니드로그는 같은 파일에 들어가면 안된다.
ㄴ 데이터파일을 복구하는데 사용하기 때문.
리두로그 파일은 순환하는 방식.
로그스위치 = 현재 사용 중인 리두 로그 파일 그룹이 가득 차서 LGWR 프로세스가 다음 리두 로그 파일 그룹에 기록을 시작
ㄴ 이게 일어나면 항상 체크포인트를 같이 일으킨다.
커런트 = 내가 사용하는 그룹
체크포인트 = 메모리에만 있는 변경된 데이터를 실제 데이터파일에 쓴다.
ㄴ 데이터베이스, LGWR가 다 쓴다.
체크포인트를 강제로 일으키면 액티브가 인액티브가 된다.
작동방법
CURRENT상태(그룹1 사용하는중) → 로그파일이 가득차서(그룹1 가득 참) Log Switch 실행 ( Checkpoint 진행 ) → 다음 그룹이 CURRENT상태(그룹2 사용)가 되고 사용했던 그룹 (그룹1)은 ACTIVE상태가 됨. → Checkpoint 완료가 되면 ACTIVE상태였던 그룹(그룹1)이 INACTIVE상태가 됨.
그룹은 CURRENT , ACTIVE, 그룹이 2개, 멤버가 한명이면 삭제 불가능
Redo log file 관리
사용 명령어
SQL> SELECT A.GROUP#, A.MEMBER, B.BYTES, B.STATUS, B.SEQUENCE#
2 FROM V$LOGFILE A, V$LOG B
3 WHERE A.GROUP# = B.GROUP#
4 ORDER BY 1;
- 현재 log 그룹과 member의 운영 상황을 조회한다.
- GROUP# : 그룹 번호
- MEMBER : 멤버 파일의 경로 및 파일명
- BYTES : 멤버 파일의 크기
- STATUS : 액티브인지,커런트인지 알수있음.
로그 시퀀스 넘버는 리셋하는 방법이 없다.
SQL> ARCHIVE LOG LIST
- Archive log 관련 내용을 조회한다.
- Archive log mode가 아닌 경우 조회된 내용은 별 의미가 없다.
SQL> ALTER SYSTEM SWITCH LOGFILE;
- Log switch를 강제로 발생 시킨다.
SQL> ALTER SYSTEM CHECKPOINT;
- Check point를 강제로 발생 시킨다.
SQL> SELECT A.GROUP#, A.MEMBER, B.BYTES, B.STATUS, B.SEQUENCE#
FROM V$LOGFILE A, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1;
GROUP# MEMBER BYTES STATUS SEQUENCE#
-------------- -------------------------------------------------- --------------- --------------- --------------------
1 /app/ora19c/oradata/DB19/redo01.log 209715200 INACTIVE 13
2 /app/ora19c/oradata/DB19/redo02.log 209715200 INACTIVE 14
3 /app/ora19c/oradata/DB19/redo03.log 209715200 CURRENT 15
SQL> !vi switch.sql
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM CHECKPOINT;
SQL> !vi redo_log_status.sql
SELECT A.GROUP#, A.MEMBER, B.BYTES, B.STATUS, B.SEQUENCE#
FROM V$LOGFILE A, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1;
ㄴ 이런건 sql파일로 만들어서 그때그때 실행이 쉽게 만들어두는게 좋다.
SQL> @switch
SQL> @redo_log_status
Redo log group 추가와 삭제
ㄴ 새로 추가한놈이 무조건 커런트가 된다
사용 명령어
SQL> ALTER DATABASE DROP LOGFILE GROUP [group number];
- 지정한 redo log group을 삭제한다.
SQL> ALTER DATABASE ADD LOGFILE GROUP [group number]
2 (['member file1', 'member file2', ... ]) SIZE [크기];
- redo log group을 추가한다. [group number]는 생략 가능하다.
Redo log member 추가와 삭제
사용 명령어
SQL> ALTER DATABASE DROP LOGFILE MEMBER
2 ['member file1', 'member file2', ...];
- 지정한 멤버 파일을 삭제한다.
SQL> ALTER DATABASE ADD LOGFILE MEMBER
2 ['member file'] TO GROUP [group nember], 3 ... ;
- redo log 멤버 파일을 지정한 그룹에 추가한다.