오라클] 아카이브 로그 모드(Archive Log Mode)
아카이브 로그 모드
아카이브 로그 모드(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)' 카테고리의 다른 글
오라클] OS의 물리파일 읽기 쓰기(UTL_FILE) (0) | 2017.09.07 |
---|---|
오라클] 트리거(Trigger) (0) | 2017.09.05 |
오라클] ORACLE SQL*LOADER (0) | 2017.09.04 |
mysql 원격에서 접속 하기 (0) | 2017.08.21 |
오라클] 인덱스(Index) 관리 (0) | 2017.07.24 |
오라클] 아카이브 로그 모드(Archive Log Mode) (0) | 2017.07.19 |
오라클] 리두 로그 파일(Redo Log File) (0) | 2017.07.18 |
오라클] 테이블스페이스(Tablespace)와 데이터 파일(Data File) (0) | 2017.07.17 |
SQL 기초] 제약조건(Constraint) 관리(추가, 삭제, 비활성화, 활성화) (0) | 2017.03.06 |
SQL 기초] 제약조건 조회하기(oracle, mysql) (0) | 2017.03.04 |
SQL 기초] 제약 조건(Constraint) (0) | 2017.03.03 |