ARCHIVE LOG
INTRODUCTION OF ARCHIVE LOG
모든 트랜젝션(transaction)은 Online Redo Log에 기록이 됩니다. 이 기록들은 예상치 못한 데이터베이스의 오류등에 대비하여 트랜젝션을 롤백하고 최근까지 했던 작업을 자동으로 다시 수행해주는 복구 알고리즘에 있어 굉장히 중요합니다. 이러한 리두로그에 관한 정보는 다음 뷰를 이용하여 조회해 볼 수 있습니다.
-V$LOG, V$LOGFILE, V$LOG_MEMBER
예상치 못한 데이터 베이스의 오류에 대하여 항상 준비를 해야 합니다. 그래서 우리는 일정 주기마다 계획적으로 백업을 수행합니다. 백업의 방식 또한 다양합니다. 사용자 백업, 인크리멘탈 백업, 그리고 아카이브 로그 백업입니다(User-managed Back up, Incremental Back up and Archive log back up). 이번 포스트에서는 아카이브 로그의 설정 및 아카이브 로그모드로 DB를 수행하는 방법을 알아보겠습니다.
NOARCHIVE LOG MODE
처음 데이터베이스 생성시 데이터베이스는 NOARCHIVE LOG 모드로 생성이 됩니다. NOARCHIVE LOG에서는 Redo log 파일이 순환 방식으로 사용이 됩니다. 즉 A로그파일이 다 채워지면 LGWr은 B로그파일에 Transaction을 기록합니다. B가 다 채워지면 다시 A에 기록합니다. 우선 리두 로그가 겹쳐 쓰여지면(재사용 되면) 마지막 전체 백업에서만 복구가 가능합니다.
ARCHIVE LOG MODE
가득 찬 리두 로그 파일은 체크포인트가 일어나고 ARCn 에 의해 백업되기 전까지는 다시 사용할 수 없습니다. 콘트롤 파일의 엔트리에 Archived log file의 Sequence 번호가 기록됩니다.
인스턴스 복구에서 데이터베이스에 일어난 가장 최근의 변화를 그대로 유지시킬 수 있으며 Archive log는 Media recovery 에서도 사용할 수 있습니다.
Automatic Archive
자동으로 아카이브를 수행하기 위해서는 다음 파라미터를 설정합니다.
LOG_ARCHIVE_START=TRUE
만약 수동으로 아카이빙을 수행하려면 값을 FALSE 로 바꿔주면 됩니다. 단, 이 상태에서 아카이빙을 하지 않은채로 온라인 리두 로그파일이 가득 차게 될 경우 아카이빙을 할때까지 데이터베이스는 멈춰버립니다.
Specifying Multiple ARCn Process
다음의 파라미터를 통해 인스턴스가 시작될때 ARC의 갯수를 정할 수 있습니다.
LOG_ARCHIVE_MAX_PROCESSES
병렬 DDL 혹은 DML 작업은 많은 수의 리두 로그 파일을 생성합니다. 단일 ARC프로세스로 이러한 프로세스를 아카이빙 하는것은 ARC에 많은 부하를 불러 일으킬 것 입니다.
LOG_ARCHIVE_START 가 TRUE로 되어 있으면 LOG_ARCHIVE_MAX_PROCESSES에 정의된 숫자 만큼(최대 10) ARC를 가지고 인스턴스가 시작됩니다. 이 파라메터는 ALTER SYSTEM SET 구문으로 변경할 수 있습니다.
Enabling Automatic Archiving After Instance Startup
인스턴스를 다운하지 않고 ALTER 구문을 이용하여 자동 아카이빙 기능을 사용할 수 있습니다. 다음의 방법을 사용합니다.
UNIX) ALTER SYSTEM ARCHIVE LOG START TO '/ORADATA/ARCHIVE1;
NT) ALTER SYSTEM ARCHIVE LOG START TO 'c:\u04\Oracle\Test\log\';
* <-> ALTER SYSTEM ARCHIVE LOG STOP;
SPECIFYING THE ARCHIVE LOG DESTINATION
아카이브 로그가 저장될 위치를 지정합니다. 다음 두가지 파라메터를 이용합니다.
LOG_ARCHIVE_DEST_n //아카이브 로그가 저장될 위치. 10개까지 지정 가능
LOG_ARCHIVE_FORMAT //아카이브 로그의 파일 형식
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1="LOCATION=/archive1/";
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2="SERVICE=standby_db1";
Location & Service
로컬 디스크의 위치에 아카이브 로그 파일을 저장할 시에는 'LOCATION' 구문을 사용합니다. 아카이브 로그 파일이 원격 DB에 있을 경우 Oracle Net Alias 를 'SERVICE' 구문을 사용하여 원격 임을 알려줍니다. 이 Alias 의 정보는 TNSNAMES.ORA 파일의 기록을 참고합니다. 최소한 한개의 LOCATION 옵션을 가진 경로를 설정해 주어야 합니다.
Mandatory & Optional
MANDATORY 옵션은 반드시 아카이브 로그가 성공적으로 만들어 져야 할 경우 사용합니다. OPTIONAL 은 성공적으로 만들어지지 않아도 오라클은 신경쓰지 않습니다.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1="LOCATION=/archive1/
MANDATORY REOPEN";
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2="SERVICE=standby_db1
MANDATORY REOPEN REUSE 600";
ALTER SYSTEM SET LOG_ARCHIVE_DEST_3="LOCATION=/archive2/
OPTINAL";
REOPEN 옵션은 아카이브 로그 파일 생성 실패시 지정된 수의 초만큼 시간이 지난후에 아카이브 로그 파일을 재생성 하기 위한 시도를 합니다. 기본값은 300 입니다. OPTIONAL 로 지정된 것은 에러의 유무와 상관없이 진행됩니다.
Controlling Archiving to a Destination
지정된 LOG_ARCHIVE_DEST_n 을 활성화 시키거나 잠시 중지시킬 수 있습니다. 기본값으로는 Enable 되어 있습니다. 만약 잠시 하나의 Dest를 정지 시키고자 한다면 다음 구문을 이용합니다.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = [ENABLE | DEFER ]
SPECIFYING A MINIMUM NUMBER OF LOCAL DESTINATIONS
최소 성공해야할 아카이브 로그의 갯수가 몇개인지를 설정합니다. 예를 들어 2로 설정했다면 체크포인트등 로그가 스위치가 되는 이벤트가 발생하고 아카이빙이 시작됬을때, 이때 생성된 아카이브 로그 파일이 최소 두쌍이 되어야 한다는 것을 뜻 합니다. 다음 파라메터를 이용하여 설정할 수 있습니다.
ALTER SYSTEM SET LOG_ARCHIVE_MIN_SUCCEED_DEST = 2
SPECIFYING THE FILE NAME FORMAT
LOG_ARCHIVE_FORMAT = extention
File Name Options
- %s 혹은 %S : 파일 이름에 log sequence 번호를 넣습니다.
- %t 혹은 %U : 파일 이름에 thread 번호를 넣습니다.
- %S : 고정 길이를 사용하게 하며 빈 자리는 0으로 채웁니다.
CHANGING THE ARCHIVE MODE
CREATE DATABASE 로 첫 데이터베이스를 만들면 기본적으로 NOARCHIVE 상태로 만들어 집니다. ALTER DATABASE 명령을 통해 상태를 변경할 수 있습니다.
STEP 01) SHUTDOWN IMMEDIATE
STEP 02) STARTUP MOUNT
STEP 03) ALTER DATABASE ARCHIVELOG;
STEP 04) ALTER DATABASE OPEN;
STEP 05) Take a full backup of the database.
OBTAINING ARCHIVE LOG INFORMATION
Dynamic Views
V$ARCHIVED_LOG, V$ARCHIVE_DEST, V$LOG_HISTORY
V$DATABASE, V$ARCHIVE_PROCESSES
Command Line
SQL>ARCHIVE LOG LIST;
FIN
REF) Oracle9i DBA Fundamental II
댓글 없음:
댓글 쓰기