Skip to the content.

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;