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

2017.07.19 07:00



아카이브 로그 모드




아카이브 로그 모드(archive log mode)란?



오라클이 장애 복구를 대비해서 사용하는 리두 로그 파일에 대해 지난 글에서 정리해보았다. 





그러나 리두 로그 파일을 이용한 복구도 불완전 복구가 될수 있는데 잦은 로그 스위치로 리두 로그 그룹을 순환한 경우 맨 처음 리두 로그 파일을 덮어써서 불완전 복구가 될 수 있다는 점이다. 


이런 경우에 대비해서 리두 로그 파일을 별도의 디렉토리에 따로 저장해 놓는 방식을 아카이브 로그 모드(Archive Log Mode) 또는 아카이브 모드(Archive Mode)라고 한다. 


(오라클 설치시 기본 설정은 아카이브 로그 모드를 사용하지 않는 non-archive Log Mode 이다.)




LGWR 프로세서가 첫번째 리두 로그 파일에서 로그 스위치가 일어나서 두번째 리두 로그 파일로 옮겨갈 때 ARCH 백그라운드 프로세서는 첫번째 리두 로그 파일을 미리 지정해둔 아카이브 저장 위치로 복사한다.  두번째에서 세번째로 리두 로그 파일이 옮겨갈 때도 두번째 리두 로그 파일을 아카이브 저장위치로 복사한다. 이렇게 계속 진행하다가 세번째 리두 로그 파일에서 첫번째 리두 로그 파일로 순환해서 파일을 덮어쓰더라도 아카이브 저장 경로에 저장된 첫번째 리두 로그 파일은 온전히 보존된다. 





아카이브 로그 모드 확인



1
2
3
4
5
6
SQL> archive log list
Database log mode           No Archive Mode
Automatic archival           Disabled
Archive destination           USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     12
Current log sequence           15
cs





아카이브 로그 파일 저장위치


11g에서는 $ORACLE_BASE/fast_recovery_area (10g에서는 flash_recover_area)


이 디렉토리는 10g에서는 2G, 11g에서는 4G 기본값으로 설정.


여기에 Archive Log, Flashback Log, Rman Log 등이 저장되므로 금방 찰 수 있으므로 조심해야. 아카이브 로그로 시작하기 전에 별도의 공간을 OS 차원에서 미리 준비해 둬야 한다. 



* 아카이브 로그 모드로 운영할 때 아카이브 로그를 저장할 수 없게될 때(퍼미션의 문제거나 파일시스템이 full되었을 때 아카이브 행(Archive Hang)이 발생하고 DB가 중지되는 장애가 생길 수 있다.




아카이브 모드로 설정 작업 순서


1) Parameter파일 수정

2) DB 종료

3) DB 인스턴스를 Mount까지만 시작

4) mode 변경

5) DB 오픈



9i에서는 pfile을 아래처럼 수정해서 아카이브 로그 모드 이용 가능


log_archive_start = true 

log_archive_dest = '경로' 

log_archive_format = %s_%t_%r.arc



- 10g부터는 pfile의 log_archive 파라미터 사용 불가 -> spfile 수정해야


- log_archive_dest를 여러 디렉토리로 다중화해서 각각 보관할 수 있다.(11g는 log_archive_dest가 31개까지 준비되어 있다)




* Archive log file 포멧


- %S : redo 로그 시퀀스 번호를 표시하여 자동으로 왼쪽이 0으로 채워져 파일 이름 길이를 일정하게 

- %s : redo 로그 시퀀스 번호를 표시하고, 파일 이름 길이를 일정하게 맞추지 않는다.

- %T : redo 스레드 넘버를 표시하며, 자동으로 왼쪽이 0으로 채워져 파일 이름 길이를 일정하게 만든다.

- %t : redo 스레드 넘버를 표시하며, 파일 이름 길이를 일정하게 맞추지 않는다.





아카이브 모드로 설정(예시)


1) 파라미터 파일 수정



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
-- log_archive_dest 디렉토리 지정여부 확(value값 확인)
 
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
 
 
 
-- archive log 파일 저장 디렉토리 만들기
 
SQL> ! mkdir /ora_backup/arch1
 
SQL> ! mkdir /ora_backup/arch2
 
SQL> ! ls /ora_backup
arch1  arch2
 
 
 
-- log_archive_dest 디렉토리, log file format 지정
 
SQL> alter system set log_archive_dest_1='location=/ora_backup/arch1' scope=spfile;
 
System altered.
 
SQL> alter system set log_archive_dest_2='location=/ora_backup/arch2' scope=spfile;
 
System altered.
 
SQL> alter system set log_archive_format="%s_%t_%r.arc" scope=spfile;
 
System altered.
 
cs




2) ~ 3) DB 종료 후 Mount까지만 시작


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
 
 
SQL> startup mount;
ORACLE instance started.
 
Total System Global Area 1536602112 bytes
Fixed Size            2213616 bytes
Variable Size         1040189712 bytes
Database Buffers      486539264 bytes
Redo Buffers            7659520 bytes
Database mounted.
 
cs




4) mode 변경



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SQL> archive log list;
Database log mode           No Archive Mode
Automatic archival           Disabled
Archive destination           /ora_backup/arch2
Oldest online log sequence     13
Current log sequence           16
 
 
SQL> alter database archivelog;
 
Database altered.
 
 
SQL> archive log list;
Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /ora_backup/arch2
Oldest online log sequence     13
Next log sequence to archive   16
Current log sequence           16
 
cs




5) DB 오픈


1
2
3
4
SQL> alter database open;
 
Database altered.
 
cs




아카이브 모드 동작 테스트


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
-- 강제 로그 스위치
 
SQL> alter system switch logfile;
 
System altered.
 
SQL> /
 
System altered.
 
SQL> /
 
System altered.
 
 
 
-- arhcive 파일 조회
 
SQL> ! ls -al /ora_backup/arch1
합계 2828
drwxr-xr-x. 2 oracle oinstall    4096  7월 16 23:55 .
drwxr-xr-x. 4 oracle root        4096  7월 16 23:34 ..
-rw-r-----. 1 oracle oinstall 2875904  7월 16 23:55 16_1_949193144.arc
-rw-r-----. 1 oracle oinstall    1024  7월 16 23:55 17_1_949193144.arc
-rw-r-----. 1 oracle oinstall    1024  7월 16 23:55 18_1_949193144.arc
 
SQL> ! ls -al /ora_backup/arch2
합계 2828
drwxr-xr-x. 2 oracle oinstall    4096  7월 16 23:55 .
drwxr-xr-x. 4 oracle root        4096  7월 16 23:34 ..
-rw-r-----. 1 oracle oinstall 2875904  7월 16 23:55 16_1_949193144.arc
-rw-r-----. 1 oracle oinstall    1024  7월 16 23:55 17_1_949193144.arc
-rw-r-----. 1 oracle oinstall    1024  7월 16 23:55 18_1_949193144.arc
 
cs





덧. 


아카이브 로그 모드 설정 전 논아카이브 모드에서 풀백업(오프라인 백업)을 받았다 하더라도 이후 아카이브 로그 모드로 운영하게되면 이전 백업을 사용할 수 없기 때문에 풀 백업을 다시 수행해야 한다.

 

저작자 표시 비영리 변경 금지
신고

또루아빠 SQL(오라클,mysql) , , , , , , , ,

티스토리 툴바