_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › 리두로그파일의이중화작업
Describe 리두로그파일의이중화작업 here
SQL> -- 리두로그 파일의 이중화 작업
SQL> set linesize 150 pagesize 999
SQL> connect internal
연결되었습니다.
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TI
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------
         1          1        658    1048576          1 NO  INACTIVE                472248 03/10/30
         2          1        659    1048576          1 NO  CURRENT                 472305 03/10/30
         3          1        657    1048576          1 NO  INACTIVE                452040 03/10/24

SQL> select 1024*1024 from dual;

 1024*1024
----------
   1048576

SQL> -- 1MB씩 잡혀 있는 것이 보인다....절라 작게 잡아 놨다..
SQL> select * from tab
  2  where tname like '%FILE%';

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
C_FILE#_BLOCK#                 CLUSTER
DBA_DATA_FILES                 VIEW
DBA_EXP_FILES                  VIEW
DBA_PROFILES                   VIEW
DBA_TEMP_FILES                 VIEW
FILE$                          TABLE
FILEXT$                        VIEW
GV_$BACKUP_DATAFILE            VIEW
GV_$CONTROLFILE                VIEW
GV_$CONTROLFILE_RECORD_SECTION VIEW
GV_$DATAFILE                   VIEW
GV_$DATAFILE_COPY              VIEW
GV_$DATAFILE_HEADER            VIEW
GV_$DBFILE                     VIEW
GV_$FILESTAT                   VIEW
GV_$FILE_PING                  VIEW
GV_$LOGFILE                    VIEW
GV_$PROXY_DATAFILE             VIEW
GV_$PWFILE_USERS               VIEW
GV_$RECOVERY_FILE_STATUS       VIEW
GV_$RECOVER_FILE               VIEW
GV_$TEMPFILE                   VIEW
LOADER_FILE_TS                 VIEW
PROFILE$                       TABLE
SYSFILES                       VIEW
V_$BACKUP_DATAFILE             VIEW
V_$CONTROLFILE                 VIEW
V_$CONTROLFILE_RECORD_SECTION  VIEW
V_$DATAFILE                    VIEW
V_$DATAFILE_COPY               VIEW
V_$DATAFILE_HEADER             VIEW
V_$DBFILE                      VIEW
V_$FILESTAT                    VIEW
V_$FILE_PING                   VIEW
V_$LOGFILE                     VIEW
V_$PROXY_DATAFILE              VIEW
V_$PWFILE_USERS                VIEW
V_$RECOVERY_FILE_STATUS        VIEW
V_$RECOVER_FILE                VIEW
V_$TEMPFILE                    VIEW

40 개의 행이 선택되었습니다.

SQL> select * from v$logfile;

    GROUP# STATUS  MEMBER
---------- ------- -----------------------------------
         1 STALE   E:\ORACLE\ORADATA\ORA816\REDO03.LOG
         3 STALE   E:\ORACLE\ORADATA\ORA816\REDO01.LOG
         2         E:\ORACLE\ORADATA\ORA816\REDO02.LOG
SQL> -- 여기에서는 같은 디스크에 있지만 실제로는 분산되어야 한다. 
SQL> -- 또한 현재는 로그 파일을 순환하면서 사용되고 있다고 보면 안되고, 그룹으로 순환한다고
SQL> -- 생각해야 한다. 
SQL> -- 로그 파일 그룹 추가
SQL> alter database add logfile group 4
  2  ('E:\ORACLE\ORADATA\ORA816\REDO04.LOG') size 1M;

데이타베이스가 변경되었습니다.

SQL> -- 다음과 같이 두개를 맴버까지 같이 추가할 수 있다. 
SQL> alter database add logfile group 5
  2  ('E:\ORACLE\ORADATA\ORA816\REDO05.LOG',
  3   'E:\ORACLE\ORADATA\ORA816\REDO05_2.LOG') size 1M;

데이타베이스가 변경되었습니다.

SQL> --맴버만 추가
SQL> --맴버에는 size 설정이 없다. 왜냐하면 맴버끼리는 파일 크기가 같아야 이중화가 될 수 있기 때문이다.
SQL> alter database add logfile member 'E:\ORACLE\ORADATA\ORA816\REDO01_2.LOG'
  2  to group 1;

데이타베이스가 변경되었습니다.

SQL> alter database add logfile member 'E:\ORACLE\ORADATA\ORA816\REDO02_2.LOG'
  2  to group 2;

데이타베이스가 변경되었습니다.

SQL> alter database add logfile member 'E:\ORACLE\ORADATA\ORA816\REDO03_2.LOG'
  2  to group 3;

데이타베이스가 변경되었습니다.

SQL> alter database add logfile member 'E:\ORACLE\ORADATA\ORA816\REDO04_2.LOG'
  2  to group 4;

데이타베이스가 변경되었습니다.

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TI
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------
         1          1        658    1048576          2 NO  INACTIVE                472248 03/10/30
         2          1        659    1048576          2 NO  CURRENT                 472305 03/10/30
         3          1        657    1048576          2 NO  INACTIVE                452040 03/10/24
         4          1          0    1048576          2 YES UNUSED                       0
         5          1          0    1048576          2 YES UNUSED                       0

SQL> col group# format 999
SQL> col status format a20
SQL> col member format a50
SQL> select * from v$logfile;

GROUP# STATUS               MEMBER
------ -------------------- --------------------------------------------------
     1 STALE                E:\ORACLE\ORADATA\ORA816\REDO03.LOG
     3 STALE                E:\ORACLE\ORADATA\ORA816\REDO01.LOG
     2                      E:\ORACLE\ORADATA\ORA816\REDO02.LOG
     4                      E:\ORACLE\ORADATA\ORA816\REDO04.LOG
     5                      E:\ORACLE\ORADATA\ORA816\REDO05.LOG
     5                      E:\ORACLE\ORADATA\ORA816\REDO05_2.LOG
     1 INVALID              E:\ORACLE\ORADATA\ORA816\REDO01_2.LOG
     2 INVALID              E:\ORACLE\ORADATA\ORA816\REDO02_2.LOG
     3 INVALID              E:\ORACLE\ORADATA\ORA816\REDO03_2.LOG
     4 INVALID              E:\ORACLE\ORADATA\ORA816\REDO04_2.LOG

10 개의 행이 선택되었습니다.

SQL> 

리두로그 파일을 서로 다른 디스크에 분산 시키는 것은 아주 중요하다. 왜냐하면 수시로 LGWR가
쓰기 때문에 경합을 줄이는 것도 중요하고, 로그 쓰기라는 DBMS의 필수적인 일에 서비스에 대한
영향을 최소화 할 수 있기 때문이다. 

리두로그 파일의 이중화는 안정성면에서는 높이 사주만 하지만 위의 실습처럼 했을 때 로그를 쓰기
위해서 LGWR 프로세스는 더 열심히 일해야 할 것이다. 즉, CPU가 더 고생을 할 것이라는 소리다.          




댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:52

누군가 나에게 상처라는 공을 던졌을 때 그것을 다 받지 말고 거절해라. 모든 행복과 고통은 그때뿐 바람처럼 스쳐 지나간다.