Home | Print | Q/A | Guest | NewsLetter
Display context of search results Case-sensitive searching
Database System
Data Warehouse
Data Analysis
Operating System
Open Source
Enterprise Architecture
Software Engineering
Process
Working Smart

SQL Server
PostgreSQL
Oracle
DB2
Teradata
MySQL
Performance Tuning
Programming

Link
Philosophy
Tools
Misc
주인놈
_
_
SideBar Edit
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|FindPage|DeletePage|LikePages|http://www.databaser.net|last modified 2010-03-08 17:35:27