IT 기술/Oracle

Oracle redo log file group 추가, 삭제 - 이동 - 에 대한 짧은 글.

ㅇㅔ ㄷㅡ 2009. 6. 24. 16:43
 Oracle DBMS를 운영하다보면 전임자의 실수이거나, 게으른 본인의 생각없는 설치 및 운영으로 인해서 디스크 공간의 부족함으로 인해서 서비스가 중단되는 일이 생기기도 합니다. 본사 내에서 마구잡이로 사용하는 개발용 DB중에 그런 장비가 있었는데 /opt/oracle 디렉토리가 사용율 100%에 이르러서야 확인을 하게 되었습니다.
 문제는 현재 각종 로그가 쌓이는 디렉토리와 $ORACLE_HOME, 그리고 각종 시스템 관련 Datafile, redo log file 등이 같은 파티션에 저장이 되고 있더군요. 그래서 ... 서비스를 중지시키지 않고 작업을 해야겠다는 생각에 redo log file을 옮기기로 결정했습니다. 이게 제일 만만해보이더군요.

리두로그 그룹 및 파일 현황 확인
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#;

    GROUP# STATUS           TYPE      MEMBER
---------- ---------------- ------- ----------------------------------------
         1 CURRENT          ONLINE  /opt/oracle/oradata/edo01.log                                    
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log            
         3 INACTIVE         ONLINE  /opt/oracle/oradata/redo03.log 

네번째 리두로그 그룹 및 파일 추가

SQL> alter database add logfile group 4('/data/orasys/redo04.log') size 100M;

Database altered.

SQL>

리두로그 그룹 및 파일 추가 결과 확인
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#;

    GROUP# STATUS           TYPE    MEMBER                                                                              
---------- ---------------- ------- ---------------------------------------- 
         1 CURRENT          ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log           
         3 INACTIVE         ONLINE  /opt/oracle/oradata/redo03.log             
         4 UNUSED           ONLINE  /data/orasys/redo04.log

기존 리두로그 파일 그룹중 하나 삭제
SQL> alter database drop logfile group 3;
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#(+);

    GROUP# STATUS           TYPE    MEMBER
---------- ---------------- ------- ----------------------------------------   
         1 CURRENT          ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log            
         4 UNUSED           ONLINE  /data/orasys/redo04.log

리두로그 파일 그룹 3을 새로운 위치에 추가
SQL> alter  database add logfile group 3 ('/data/orasys/redo03.log') SIZE 100M;

Database altered.

리두로그 파일 그룹 3이 정상적으로 추가되었는지 확인
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#(+);

    GROUP# STATUS           TYPE    MEMBER
---------- ---------------- ------- ----------------------------------------   
         1 CURRENT          ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log            
         3 UNUSED           ONLINE  /data/orasys/redo03.log                    
         4 UNUSED           ONLINE  /data/orasys/redo04.log                             

SQL>

로그 스위치를 강재로 일으키며 상태값을 확인해본다.
SQL> alter system switch logfile;

System altered.

SQL>
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#(+);

    GROUP# STATUS           TYPE    MEMBER
---------- ---------------- ------- ----------------------------------------    
         1 ACTIVE           ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log              
         3 CURRENT          ONLINE  /data/orasys/redo03.log                    
         4 UNUSED           ONLINE  /data/orasys/redo04.log                            

SQL>
SQL>  alter system switch logfile;

System altered.

SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#(+);

    GROUP# STATUS           TYPE    MEMBER
---------- ---------------- ------- ----------------------------------------    
         1 INACTIVE         ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log             
         3 INACTIVE         ONLINE  /data/orasys/redo03.log
         4 CURRENT          ONLINE  /data/orasys/redo04.log

SQL>