[Oracle] Redo Log File 이중화

HYEOB KIM·2023년 8월 6일
0

Oracle

목록 보기
48/58

Redo Log File 이중화

Redo Log File은 각각 다른 Disk에 이중화하는 것이 권장됩니다.
Redo Log File은 member로 불리고, 다른 Disk에 있는 같은 Redo Log File을 묶은 단위를 group이라고 합니다.

1) 기존 현황 확인

현재 redo log file은 3개의 group이 있지만 각 group에는 member가 1개씩만 존재하는 상태입니다.

SQL> select GROUP#, STATUS, TYPE, MEMBER      from v$logfile ;

GROUP#   STATUS   TYPE    MEMBER
-------- -------- ------- ----------------------------------------
     1            ONLINE  /u02/app/oracle/oradata/prod/redo01.log
     2            ONLINE  /u02/app/oracle/oradata/prod/redo02.log
     3            ONLINE  /u02/app/oracle/oradata/prod/redo03.log

2) group 별로 member 추가

member의 이중화를 위해서 각 group 별로 member를 추가합니다.

# FILE SYSTEM을 쓰는 DB에서 추가

SQL> ALTER DATABASE ADD LOGFILE MEMBER
        '/u02/app/oracle/oradata/prod/redo01b.log' TO GROUP 1 ,
        '/u02/app/oracle/oradata/prod/redo02b.log' TO GROUP 2 ,
        '/u02/app/oracle/oradata/prod/redo03b.log' TO GROUP 3 ;
 

# ASM을 쓰는 DB에서 추가

SQL> ALTER DATABASE ADD LOGFILE MEMBER
         '+DATA' TO GROUP 1 ,
         '+DATA' TO GROUP 2 ,
         '+DATA' TO GROUP 3 ;

3) status 변경

redo log file 구성 현황을 다시 살펴보면 추가한 member의 status가 INVALID인 것을 확인할 수 있습니다.

SQL> select GROUP#, STATUS, TYPE, MEMBER from v$logfile ;

GROUP#   STATUS    TYPE      MEMBER
-------- --------- --------- ----------------------------------------
     1             ONLINE    /u02/app/oracle/oradata/prod/redo01.log

     1   INVALID   ONLINE    /u02/app/oracle/oradata/prod/redo01b.log
     2             ONLINE    /u02/app/oracle/oradata/prod/redo02.log

     2   INVALID   ONLINE    /u02/app/oracle/oradata/prod/redo02b.log
     3             ONLINE    /u02/app/oracle/oradata/prod/redo03.log

     3   INVALID   ONLINE    /u02/app/oracle/oradata/prod/redo03b.log

member들 끼리 동기화되도록 redo log file의 수만큼 log switch 합니다.

SQL> alter system switch logfile;

SQL> /

SQL> /

SQL> /

SQL> /

SQL> /

4) checkpoint 발생

ACTIVE 상태의 group을 INACTIVE 상태로 만들기 위해 checkpoint를 발생시킵니다.

SQL> alter system checkpoint;

SQL> select GROUP#, STATUS, TYPE, MEMBER from v$logfile ;

GROUP#   STATUS    TYPE      MEMBER
-------- --------- --------- ----------------------------------------
     1             ONLINE    /u02/app/oracle/oradata/prod/redo01.log

     1        	   ONLINE    /u02/app/oracle/oradata/prod/redo01b.log
     2             ONLINE    /u02/app/oracle/oradata/prod/redo02.log

     2         	   ONLINE    /u02/app/oracle/oradata/prod/redo02b.log
     3             ONLINE    /u02/app/oracle/oradata/prod/redo03.log

     3        	   ONLINE    /u02/app/oracle/oradata/prod/redo03b.log
profile
Devops Engineer

0개의 댓글