콘텐츠로 이동

Archive

아카이브 로그

오라클은 데이터 복구를 위해 데이터베이스에 대한 모든 변경사항을 redo 로그 파일에 보관함

아카이브 모드 설명
Enabled 리두 로그 파일을 보관함
Disabled 리두 로그 파일을 보관하지 않음

아카이브 모드가 활성화가 되어있지 않다면 몇개의 redo 로그 파일로 돌려 쓰는 방식 (이전 정보는 사라짐)

활성화가 되어있다면 이전 파일을 다른 곳에 복사해 두는 방식 (모든 정보가 보존)


아카이브 모드 설정

  1. 아카이브 로그를 저장할 디렉토리를 생성

    mkdir /ora_archive_1
    mkdir /ora_archive_2
    mkdir /ora_archive_3
    
    chown -R oracle_user:group_name /ora_archive_1
    chown -R oracle_user:group_name /ora_archive_2
    chown -R oracle_user:group_name /ora_archive_3
    
    >아카이브 로그를 분산시켜 만일의 사태에 대비함

  2. 데이터베이스에 접속 후 아카이브 로그 파일이 저장될 위치를 지정하는 파라미터를 수정

    sqlplus / as sysdba
    
    --Set Parameter
    ALTER SYSTEM SET log_archive_dest_1 = 'location=/ora_archive_1/' SCOPE = spfile;
    ALTER SYSTEM SET log_archive_dest_2 = 'location=/ora_archive_2/' SCOPE = spfile;
    ALTER SYSTEM SET log_archive_dest_3 = 'location=/ora_archive_3/' SCOPE = spfile;
    
    >log_archive_dest_n은 아카이브 로그 파일을 최대 10개까지 서로 다른 폴더에 분산시킬 수 있음

  3. 가동 중인 데이터베이스 종료 후 마운트 단계까지 기동

    --Shutdown
    SHUTDOWN IMMEDIATE;
    
    --Start Mount
    STARTUP MOUNT;
    

  4. 아카이브 모드를 변경 후 오픈

    --Set Archive Mode Enabled
    ALTER DATABASE archivelog;
    
    --Start Open
    ALTER DATABASE OPEN;
    

  5. 아카이브 모드 확인

    archive log list;
    /*
    Database log mode            Archive Mode
    Automatic archival           Enabled
    Archive destination          USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence   34
    Next log sequence to archive 35
    Current log sequence         35
    */
    
    --강제로 로그 스위치
    ALTER SYSTEM SWITCH logfile;
    


아카이브 모드 해제

  1. 가동 중인 데이터베이스 종료 후 마운트 단계까지 기동

    --Shutdown
    SHUTDOWN IMMEDIATE;
    
    --Start Mount
    STARTUP MOUNT;
    

  2. 아카이브 모드를 변경 후 오픈

    --Set Archive Mode Disabled
    ALTER DATABASE noarchivelog;
    
    --Start Open
    ALTER DATABASE OPEN;
    

  3. 아카이브 모드 확인

    archive log list;
    


아카이브 로그 삭제

  1. RMAN 접속

    --오라클 유저로 변경
    su - oracle_user;
    
    --RMAN 접속
    rman target /
    

  2. 아래 명령어를 확인해 필요한 작업 실행

    --아카이브 로그 리스트 확인
    list archivelog all;
    
    --아카이브 로그 삭제 (Expired는 삭제되지 않음)
    delete archivelog all;
    
    --시간 기준으로 아카이브 로그 삭제
    delete archivelog until time 'sysdate - 7' all;
    
    --Expired된 아카이브 로그 삭제
    delete expired archivelog all;
    
    --아카이브 로그 크로스체크
    crosscheck archivelog all;