카테고리 없음

오라클 리두로그 파일

boangod 2025. 10. 16. 21:32

리두로그 파일

ㄴ 어느 한 부분의 장애로 인한 데이터베이스 정보의 손실을 막을 수 있는거

 

풀백업 : 이전시점으로 돌아가지 않아도 될때 사용.

 

 

 

백업 할때 : 특정시점에서 데이터가 완전 무결하기때문에 전으로 돌아갈필요가 없어요 할때

 

 

니드로그는 사용을 그룹단위로 한다.

최소한의 그룹은 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 멤버 파일을 지정한 그룹에 추가한다.