본문 바로가기

Computer/DBMS

오라클 아카이브 로그 모드(Archive Log Mode)

오라클 아카이브 로그 모드(Archive Log Mode)



   - 아카이브 로그 모드(Archive Log Mode)란?

       오라클의 모든 작업 로그 기록 파일인 리두로그파일 내용을 다른 디렉토리에 자동으로 복사해서 저장하도록 운영하는 방법

       * 리두로드는 덮어쓰는 형식임 이에 덮어쓰기 이전 기록을 별도로 저장하는 방식

       * pfile과 spfile을 이용하여 모드를 설정할 수 있다.

       * pfile은 직접수정이 가능하지만

       * spfile은 바이너리 파일이기 때문에 직접수정이 불가능하다.


1. PFILE을 수정하여 데이타베이스를 archivelog mode로 설정하기


    1) INIT.ORA파일의 parameter 수정

         INIT.ORA 파일에서 아래 부분을 수정하고, 주석(#)을 제거하고 저장합니다.

            # 아카이브 프로세스를 오라클 시작과 함께 실행하도록 설정

            # log switch 발생시 자동으로 archive를 수행 합니다

            LOG_ARCHIVE_START = TRUE

            # 아카이브 로그 파일을 저장할 디렉토리 설정

            LOG_ARCHIVE_DEST = "C:\oracle\ora92\database\archive"  

            # 아카이브 로그 파일의 이름 설정

            LOG_ARCHIVE_FORMAT = %S.ARC

            

    2) 데이터베이스 인스턴스를 종료

            -- SQLPLUS 실행

            SQLPLUS /nolog

            -- SYSDBA 권한으로 접속 합니다. 

            SQL>CONN SYS/MANAGER AS SYSDBA

            SQL> SHUTDOWN IMMEDIATE

            데이터베이스가 닫혔습니다.

       데이터베이스가 마운트 해제되었습니다.

       ORACLE 인스턴스가 종료되었습니다.   

            

    3) 데이터베이스 인스턴스를 MOUNT

    

            SQL> STARTUP MOUNT pfile=C:\oracle\ora92\database\INITORA9I.ORA

       데이터베이스가 마운트되었습니다.

            

    4) DATABASE를 ARCHIVE LOG MODE로 전환.

    

            SQL> ALTER DATABASE ARCHIVELOG;

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

            

    5) DATABASE OPEN

    

            SQL> ALTER DATABASE OPEN; 

            

    6) ARCHIVE LOG MODE가 정상적으로 설정되어 있는지 확인한다.

    

            SQL> ARCHIVE LOG LIST

            데이터베이스 로그 모드              아카이브 모드

            자동 아카이브             사용

            아카이브 대상            C:\oracle\ora92\database\archive

            가장 오래된 온라인 로그 순서     16

            아카이브할 다음 로그   18

            현재 로그 순서           18


!------------------------------------------------------------

!    ARCHIVELOG MODE에서 NO ARCHIVELOG MODE로 전환하기

!------------------------------------------------------------


    먼저, 위에서 setting 했던 INIT.ORA 파일에서 설정했던 부분을 (#)으로 주석처리 한다.


 

            #LOG_ARCHIVE_START = TRUE

            #LOG_ARCHIVE_DEST = "C:\oracle\ora92\database\archive"  

            #LOG_ARCHIVE_FORMAT = %S.ARC

            

            -- 데이터베이스 종료

            SQL> SHUTDOWN IMMEDIATE

             

            -- 데이터베이스 인스턴스를  mount 

            SQL> STARTUP MOUNT pfile=C:\oracle\ora92\database\INITORA9I.ORA

             

            -- 데이터베이스를  no archive log mode로 전환.

            SQL> ALTER DATABASE NOARCHIVELOG;

             

            --  database open

            SQL> ALTER DATABASE OPEN; 

             

            -- 아카이브 로그 모드 상태 확인

            SQL> ARCHIVE LOG LIST 

            데이터베이스 로그 모드              아카이브 모드가 아님

            자동 아카이브             사용 안함

            아카이브 대상            C:\oracle\ora92\RDBMS

            가장 오래된 온라인 로그 순서     17

            현재 로그 순서           19    


!------------------------------------------------------------

!    SPFILE(서버 파라미터 파일)을 수정하여 데이타베이스를 ARCHIVELOG MODE로 설정

!------------------------------------------------------------


    Oracle9i 이상의 경우 서버 파라미터 파일을 사용 할 경우 아래와 같은 과정을 거쳐서 아카이브 로그모드로 변경해야 한다.

    

    

        1) 파라미터 설정

        -- sqlplus 실행

        SQLPLUS /nolog

         

        -- SYSDBA 권한으로 접속 합니다. 

        SQL> CONN / AS SYSDBA

                

        --[/// !!주의!! ///] 오라클 버전에 따라 파라메터가 다르니 주의해야 한다.

        --=====================================================

        --[Oracle 9i 일경우]

        -- LOG_ARCHIVE_START 파라미터 변경

        SQL> ALTER SYSTEM SET 

             LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;

         

        -- LOG_ARCHIVE_DEST 파라미터 변경

        SQL> ALTER SYSTEM SET 

             LOG_ARCHIVE_DEST='C:\oracle\ora92\database\archive' 

             SCOPE=SPFILE;

         

        -- LOG_ARCHIVE_FORMAT 파라미터 변경

        SQL> ALTER SYSTEM SET 

             LOG_ARCHIVE_FORMAT='%S.ARC' SCOPE=SPFILE;

                     

        --=====================================================

        --[Oracle 10g일 경우]

        -- ** LOG_ARCHIVE_START 파라미터 없어짐

         

        -- LOG_ARCHIVE_DEST_1 파라미터 변경 (10g)

        SQL> ALTER SYSTEM SET 

             LOG_ARCHIVE_DEST_1='C:\oracle\ora10\database\archive' 

             SCOPE=SPFILE;

         

        -- LOG_ARCHIVE_FORMAT 파라미터 변경 (%s, %t, %r 모두 포함해야함)

        SQL> ALTER SYSTEM SET 

             LOG_ARCHIVE_FORMAT='arch_%t_%s_%r.arc' SCOPE=SPFILE;

          

          

        --=====================================================

        --[Oracle 11g일 경우]

        -- ** LOG_ARCHIVE_START 파라미터 없어짐

         

        -- LOG_ARCHIVE_DEST 파라미터 변경

        SQL> ALTER SYSTEM SET 

             LOG_ARCHIVE_DEST='C:\oracle\ora11\database\archive' 

             SCOPE=SPFILE;

         

        -- LOG_ARCHIVE_FORMAT 파라미터 변경 (%s, %t, %r 모두 포함해야함)

        SQL> ALTER SYSTEM SET 

             LOG_ARCHIVE_FORMAT='arch_%t_%s_%r.arc' SCOPE=SPFILE;

     

         

        2) DB Shutdown 

        SQL> SHUTDOWN IMMEDIATE

         

         

        3) Mount 상태로 Startup

        SQL> STARTUP MOUNT

         

         

        4) 아카이브 로그 모드 활성화

        SQL>ALTER DATABASE ARCHIVELOG;

         

         

        5) 데이타베이스 오픈

        SQL> ALTER DATABASE OPEN; 

         

         

        6) 아카이브 로그 모드가 정상적으로 설정되어 있는지 확인한다.

        SQL> ARCHIVE LOG LIST;

        데이터베이스 로그 모드              아카이브 모드

        자동 아카이브             사용

        아카이브 대상            C:\oracle\ora92\database\archive

        가장 오래된 온라인 로그 순서     17

        아카이브할 다음 로그   19

        현재 로그 순서           19    


!------------------------------------------------------------

!    ** SPFILE(서버 파라미터 파일)을 수정하여 데이타베이스를 ARCHIVELOG MODE로 설정시 

!    파라메터가 잘못 설정되어 마운트가 안될경우

!------------------------------------------------------------


    - spfile을 pfile로 바꾸어 파라메터를 수정한 후 pfile로 기동 또는 pfile로 spfile을 생성하여 기동 


    1)pfile을 생성한다.

    -- 잘못된 spfile에서 pfile을 생성한다.

    SQL> create pfile from spfile;

    

    2)pfile을 수정한다.

    -- 잘못설정된 파라메터를 수정한다.

    

    3) Mount 상태로 Startup(pfile로 기동)

    SQL> STARTUP MOUNT

    

    4) spfile을 생성한다.

    SQL> create spfile from pfile

    

    5) DB Shutdown 

    SQL> SHUTDOWN IMMEDIATE

    

    6) Mount 상태로 Startup(spfile로 기동)

    SQL> STARTUP MOUNT

    

    * 11g의 경우 2) 이후에 바로 4)로 spfile을 생성하고 6)으로 기동할 수 있다.


!------------------------------------------------------------

!    SPFILE(서버 파라미터 파일)에서 NO ARCHIVE LOG모드로 전환하기

!------------------------------------------------------------


    1) 자동 아카이브 모드를 false로 변경 한.

    SQL> ALTER SYSTEM SET 

         LOG_ARCHIVE_START=FALSE SCOPE=SPFILE;

     

     

    2)DB shutdown 

    SQL> SHUTDOWN IMMEDIATE

     

    

    3) mount 상태로 startup

    SQL> STARTUP MOUNT

     

    

    4) 데이터베이스를  no archive log mode로 전환.

    SQL> ALTER DATABASE NOARCHIVELOG;

     

     

    5) 데이타베이스 오픈

    SQL> ALTER DATABASE OPEN; 

     

     

    6) 아카이브 로그 모드 상태 확인

    SQL> ARCHIVE LOG LIST;

    데이터베이스 로그 모드              아카이브 모드가 아님

    자동 아카이브             사용 안함

    아카이브 대상            C:\oracle\ora92\database\archive

    가장 오래된 온라인 로그 순서     17

    현재 로그 순서           19    


=============================================================

    [ 참고 ]

    

    - 구루비(구 오라클 스터디) : http://www.gurubee.net/lecture/1873

    - isCho.net :  http://www.ischo.net/