아카이브 로그 모드(Archive Log Mode)란?
우리가 오라클데이터베이스에 접속을해서 DML이나 DDL등의 명령어로 작업을 수행하면, 모든 작업의 기록이 리두로그 파일에 저장이 된다.
작업의 양이 많아지면 리두로그파일에 기록하는 내용도 굉장히 많아지게 되겠죠. 그렇게 되면 데이터를 기록하기 위해서 리두로그파일을 늘려야 하는 일이 발생을 한다.
그런데 오라클 리두로그파일은 계속 증가하는 것이 아니라 몇 개의 리두로그 파일을 만들어 놓고 번갈아 가면서 기록하는 구조로 되어 있다.
이렇게 번갈아 가면서 기록을 하게 되면 새로운작업의 내용이 예전의 작업내용을 덮어쓰므로 예전의 작업한 내용을 잃게 된다는 단점이 있다. 그래서 예전의 작업한 내용에 데이터 손실이 발생하면 복구하기 어렵다는 단점이 있다.
이런 단점을 해결하기 위한 방법이 리두로그파일의 내용을 다른 디렉토리에 자동으로 복사해서 저장하도록 운영하는 방법이다. 이렇게 운영하는 방법을 아카이브 로그 모드(Archive Log Mode)라고 한다.
오라클데이터베이스는 기본적으로 No Archive Log Mode 이고, Archive Log Mode로 운영하기 위해서는 따로 설정을 해주어야 한다.
Archive 모드 변경하는 절차입니다.
1. spfile 을 사용 할 경우
C:\>sqlplus “/as sysdba”
SQL*Plus: Release 11.2.0.1.0 Production on 수 3월 8 12:55:38 2017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> archive log list
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함으로 설정됨
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서 111
현재 로그 순서 113
spfile 사용 유무 확인
SQL> show parameter spfile;
NAME TYPE
———————————— ———————-
VALUE
——————————
spfile string
D:\APP\ADMINISTRATOR\PRODUCT\1
1.2.0\DBHOME_1\DATABASE\SPFILE
ORCL.ORA
SQL> show parameter spfile;
현재 instance 상태 확인
SQL> select status from v$instance;
STATUS
————————
OPEN
아카이브 로그 저장 경로 확인
SQL> show parameter log_archive_dest_1;
NAME TYPE VALUE
———————————— ———————- ——————–
———-
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string
log_archive_dest_13 string
log_archive_dest_14 string
log_archive_dest_15 string
log_archive_dest_16 string
log_archive_dest_17 string
log_archive_dest_18 string
log_archive_dest_19 string
SQL> alter system set log_archive_dest_1=’location=D:\archive’ scope=spfile;
시스템이 변경되었습니다.
SQL> alter system set log_archive_format=’%s_%t_%r.arc’ scope=spfile;
시스템이 변경되었습니다.
SQL> shutdown immediate;
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> startup mount;
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 3423965184 bytes
Fixed Size 2180544 bytes
Variable Size 1996491328 bytes
Database Buffers 1409286144 bytes
Redo Buffers 16007168 bytes
데이터베이스가 마운트되었습니다.
SQL> archive log list;
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함으로 설정됨
아카이브 대상 D:\archive
가장 오래된 온라인 로그 순서 111
현재 로그 순서 113
SQL> alter database archivelog;
데이타베이스가 변경되었습니다.
SQL> alter database open;
데이타베이스가 변경되었습니다.
SQL> archive log list;
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용으로 설정됨
아카이브 대상 D:\archive
가장 오래된 온라인 로그 순서 111
아카이브할 다음 로그 113
현재 로그 순서 113
SQL>
====================================================================
2. pfile 을 사용할 경우
1. Archive Log 관련 파라미터 설정
– 아카이브 파일이 떨어지는 위치 설정
SQL> alter system set log_archive_dest_1=”c:\archivelog” scope=spfile;
c:\archivelog 위치는 사이트에 맞추어 변경해 주세요.
– 아카이브 파일의 이름을 설정
SQL> alter system set log_archive_format = “arch_%t_%s_%r.arc” scope=spfile;
2. DB shutdown
SQL> Shutdown immediate
3. Archive Log mode 전환
SQL> Startup mount mount단계로 start
SQL> alter database archivelog; archive mode 변경
SQL> alter database open; database open
4. Archive Log 설정 확인
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination C:\ARCHIVELOG
Oldest online log sequence 66
Next log sequence to archive 68
Current log sequence 68
SQL> alter system switch logfile; 지정된 위치에 아카이브 파일이 생성이 되는지를 확인합니다.
– 설정 완료-
Archive log 파일의 경우 full backup 후 full backup 이전의 archive log file은 필요가 없으므로 삭제해 주셔야 합니다.
삭제하지 않고 남겨 둘 경우 디스크가 full 이 발생할 수 있습니다.