본문 바로가기
프로그래밍/데이터베이스

Oracle Archive Mode 설정하기

by pentode 2018. 4. 21.

Oracle은 데이터 복구를 위해 데이터베이스에 대한 모든 변경사항을 redo 로그 파일에 적어둡니다. redo 로그 파일에 변경정보를 적어서 보관하는데, 두 가지 방법을 사용할 수 있습니다. 아카이브 로그 모드(Archive Log Mode)노 아카이브 로그 모드(No Archive Log Mode)입니다.


노 아카이브 로그 모드는 오라클 설치시 기본 설정으로 몇 개의 redo 로그 파일을 돌려 쓰는 방식입니다. 즉, 일정 갯수의 파일에 저장된 정보 외에 이전 정보는 사라지게 됩니다.


아카이브 로그 모드는 redo로그 파일을 모두 사용하여 처음 파일에 덮어쓰기전에 이전 파일을 다른 곳에 복사해 두는 방식입니다. 그러므로 모든 로그 정보가 보존됩니다.


현재 데이터베이스의 로그 모드를 확인해 보고, 변경하는 방법을 알아보겠습니다. 테스트는 Windows에서 Oracle 11g XE버전 으로 해 보았습니다.



1. 현재 로그 모드 확인하기


- 명령창에서 sqlplussysdba 권한으로 들어갑니다.

D:\>sqlplus / as sysdba

- 다음 명령으로 현재 로그 모드를 확인할 수 있습니다.

SQL> archive log list

Database log mode              No Archive Mode

Automatic archival             Disabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     34

Current log sequence           35

SQL>

- 현재 Database log mode 가 No Archive Mode 임을 알 수 있습니다.





2. 로그 파일의 위치, 수, 상태 확인하기


- redo 로즈 파일우 위치와 갯수를 알 수 있습니다.

SQL> select * from v$logfile;

- 파일의 크기 및 어떤 파일이 사용되고 있는지 알 수 있습니다.

SQL> select group#, sequence#, bytes, members, status from v$log;





3. 아카이브 로그 모드로 운영시 특징


- 데이터베이스를 운영중인 상태에서 백업이 가능합니다.

- 시스템 테이블스페이스 외에는 온라인 복구가 가능하고, 복구중인 것은 제외한 다른 테이블스페이스는 복구중에도 운영이 가능합니다.

- 부분 복구가 가능합니다.

- 백업파일과 아카이브 로그를 모두 유지해야 하며, 아카이브 로그는 많은 용량을 차지할 수 있으므로 디스크 용량을 잘 관리해야 합니다.


4. 아카이브 모드 설정하기


- 파라미터 파일을 수정합니다.


- 예전에 사용하던 log_archive_start 는 deprecated 되었습니다. 


- Oracle XE 11g 에서는 다음과 같이 할 수 있습니다. Fast recovery area를 사용하고 있을 경우 LOG_ARCHIVE_DEST를 사용할 수 없습니다.


- Oracle Enterprise Edition 의 경우 LOG_ARCHIVE_DEST_n 을 사용할 수 있습니다. Enterprise Edition이 아니면 LOG_ARCHIVE_DEST를 사용합니다. XE는 기본적으로 fast recovery area 를 사용하므로 DB_RECOVERY_FILE_DEST 에 저장이 됩니다.

SQL> alter system set DB_RECOVERY_FILE_DEST='D:\backup\oraclexe\arch' scope=spfile;

- XE 가 아닐 경우 아래와 같이 지정할 수 있습니다.

SQL> alter system set log_archive_dest='D:\backup\oraclexe\arch' scope=spfile;

SQL> alter system set log_archive_format='arch_%t_%s_%r.arc' scope=spfile;

- 아카이브 로그가 fast recovery area 에 저장될 경우와 LOG_ARCHIVE_DEST[_n]이 Oracle ASM disk group에 위치할 경우 LOG_ARCHIVE_FORMAT 은 무시됩니다.


- 파일 이름 포맷문자는 다음과 같습니다.

%s - 로그 시퀀스 번호

%S - 앞에 0을 채워 길이를 일정하게한 로그 시퀀스 번호

%t - 쓰레드 번호

%T - 앞에 0을 채워 길이를 일정하게한 쓰레드 번호

%a - activation ID

%d - database ID

%r - resetlogs ID 여러 데이터베이스에 걸쳐 아카이브된 로그 파일의 유일한 이름을 나타냅니다.


※ 참고 : spfile의 위치를 알아보려면 SQL> show parameter pfile; 을 사용합니다.



- 데이터베이스 종료

SQL> shutdown

- 데이터베이스 마운트

SQL> startup mount

- 아카이브 로그 모드로 변경

SQL> alter database archivelog;

- 데이터베이스 오픈

SQL> alter database open;


5. 아카이브 모드를 확인합니다.

SQL> 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 SQL>



6. 강제로 로그 스위치하여 로그파일이 생성되는지 확인합니다.


SQL> alter system switch logfile;


D:\backup\oraclexe\arch\XE\ARCHIVELOG\2018_03_13\O1_MF_1_41_FBHL36H6_.ARC


이것으로 Oracle XE 에서 아카이브 로그 모드로 설정하는 것을 알아 보았습니다.


※ 참고

작업도중 잘못된 파라미터 값을 입력하거나 할 경우 데이터베이스가 start가 안될 경우가 있습니다. 없는 폴더를 지정한 경우등 입니다. 간단한 방법은 잘못 지정된 폴더를 생성하면 start가 되고 다시 파라미터를 바꾸면 됩니다.


아예 spfile이 오류가 나서 안되거나 삭제된 경우 pfile로 부터 sppfile을 새로 만드는 방법을 알아 봅니다. XE의 경우 입니다. 


create spfile='D:\util\oraclexe\app\oracle\product\11.2.0\server\dbs\SPFILEXE.ORA' 

from pfile='D:\util\oraclexe\app\oracle\product\11.2.0\server\config\scripts\init.ora';


반응형