오라클 아카이브 로그 모드(Archive Log Mode)
- 아카이브 로그 모드(Archive Log Mode)란?
오라클의 모든 작업 로그 기록 파일인 리두로그파일 내용을 다른 디렉토리에 자동으로 복사해서 저장하도록 운영하는 방법
* 리두로드는 덮어쓰는 형식임 이에 덮어쓰기 이전 기록을 별도로 저장하는 방식
* pfile과 spfile을 이용하여 모드를 설정할 수 있다.
* pfile은 직접수정이 가능하지만
* spfile은 바이너리 파일이기 때문에 직접수정이 불가능하다.
1. PFILE을 수정하여 데이타베이스를 archivelog mode로 설정하기
1) INIT.ORA파일의 parameter 수정
INIT.ORA 파일에서 아래 부분을 수정하고, 주석(#)을 제거하고 저장합니다.
# 아카이브 프로세스를 오라클 시작과 함께 실행하도록 설정
# log switch 발생시 자동으로 archive를 수행 합니다
LOG_ARCHIVE_START = TRUE
# 아카이브 로그 파일을 저장할 디렉토리 설정
LOG_ARCHIVE_DEST = "C:\oracle\ora92\database\archive"
# 아카이브 로그 파일의 이름 설정
LOG_ARCHIVE_FORMAT = %S.ARC
2) 데이터베이스 인스턴스를 종료
-- SQLPLUS 실행
SQLPLUS /nolog
-- SYSDBA 권한으로 접속 합니다.
SQL>CONN SYS/MANAGER AS SYSDBA
SQL> SHUTDOWN IMMEDIATE
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
3) 데이터베이스 인스턴스를 MOUNT
SQL> STARTUP MOUNT pfile=C:\oracle\ora92\database\INITORA9I.ORA
데이터베이스가 마운트되었습니다.
4) DATABASE를 ARCHIVE LOG MODE로 전환.
SQL> ALTER DATABASE ARCHIVELOG;
데이타베이스가 변경되었습니다.
5) DATABASE OPEN
SQL> ALTER DATABASE OPEN;
6) ARCHIVE LOG MODE가 정상적으로 설정되어 있는지 확인한다.
SQL> ARCHIVE LOG LIST
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용
아카이브 대상 C:\oracle\ora92\database\archive
가장 오래된 온라인 로그 순서 16
아카이브할 다음 로그 18
현재 로그 순서 18
!------------------------------------------------------------
! ARCHIVELOG MODE에서 NO ARCHIVELOG MODE로 전환하기
!------------------------------------------------------------
먼저, 위에서 setting 했던 INIT.ORA 파일에서 설정했던 부분을 (#)으로 주석처리 한다.
#LOG_ARCHIVE_START = TRUE
#LOG_ARCHIVE_DEST = "C:\oracle\ora92\database\archive"
#LOG_ARCHIVE_FORMAT = %S.ARC
-- 데이터베이스 종료
SQL> SHUTDOWN IMMEDIATE
-- 데이터베이스 인스턴스를 mount
SQL> STARTUP MOUNT pfile=C:\oracle\ora92\database\INITORA9I.ORA
-- 데이터베이스를 no archive log mode로 전환.
SQL> ALTER DATABASE NOARCHIVELOG;
-- database open
SQL> ALTER DATABASE OPEN;
-- 아카이브 로그 모드 상태 확인
SQL> ARCHIVE LOG LIST
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함
아카이브 대상 C:\oracle\ora92\RDBMS
가장 오래된 온라인 로그 순서 17
현재 로그 순서 19
!------------------------------------------------------------
! SPFILE(서버 파라미터 파일)을 수정하여 데이타베이스를 ARCHIVELOG MODE로 설정
!------------------------------------------------------------
Oracle9i 이상의 경우 서버 파라미터 파일을 사용 할 경우 아래와 같은 과정을 거쳐서 아카이브 로그모드로 변경해야 한다.
1) 파라미터 설정
-- sqlplus 실행
SQLPLUS /nolog
-- SYSDBA 권한으로 접속 합니다.
SQL> CONN / AS SYSDBA
--[/// !!주의!! ///] 오라클 버전에 따라 파라메터가 다르니 주의해야 한다.
--=====================================================
--[Oracle 9i 일경우]
-- LOG_ARCHIVE_START 파라미터 변경
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;
-- LOG_ARCHIVE_DEST 파라미터 변경
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_DEST='C:\oracle\ora92\database\archive'
SCOPE=SPFILE;
-- LOG_ARCHIVE_FORMAT 파라미터 변경
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_FORMAT='%S.ARC' SCOPE=SPFILE;
--=====================================================
--[Oracle 10g일 경우]
-- ** LOG_ARCHIVE_START 파라미터 없어짐
-- LOG_ARCHIVE_DEST_1 파라미터 변경 (10g)
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_DEST_1='C:\oracle\ora10\database\archive'
SCOPE=SPFILE;
-- LOG_ARCHIVE_FORMAT 파라미터 변경 (%s, %t, %r 모두 포함해야함)
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_FORMAT='arch_%t_%s_%r.arc' SCOPE=SPFILE;
--=====================================================
--[Oracle 11g일 경우]
-- ** LOG_ARCHIVE_START 파라미터 없어짐
-- LOG_ARCHIVE_DEST 파라미터 변경
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_DEST='C:\oracle\ora11\database\archive'
SCOPE=SPFILE;
-- LOG_ARCHIVE_FORMAT 파라미터 변경 (%s, %t, %r 모두 포함해야함)
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_FORMAT='arch_%t_%s_%r.arc' SCOPE=SPFILE;
2) DB Shutdown
SQL> SHUTDOWN IMMEDIATE
3) Mount 상태로 Startup
SQL> STARTUP MOUNT
4) 아카이브 로그 모드 활성화
SQL>ALTER DATABASE ARCHIVELOG;
5) 데이타베이스 오픈
SQL> ALTER DATABASE OPEN;
6) 아카이브 로그 모드가 정상적으로 설정되어 있는지 확인한다.
SQL> ARCHIVE LOG LIST;
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용
아카이브 대상 C:\oracle\ora92\database\archive
가장 오래된 온라인 로그 순서 17
아카이브할 다음 로그 19
현재 로그 순서 19
!------------------------------------------------------------
! ** SPFILE(서버 파라미터 파일)을 수정하여 데이타베이스를 ARCHIVELOG MODE로 설정시
! 파라메터가 잘못 설정되어 마운트가 안될경우
!------------------------------------------------------------
- spfile을 pfile로 바꾸어 파라메터를 수정한 후 pfile로 기동 또는 pfile로 spfile을 생성하여 기동
1)pfile을 생성한다.
-- 잘못된 spfile에서 pfile을 생성한다.
SQL> create pfile from spfile;
2)pfile을 수정한다.
-- 잘못설정된 파라메터를 수정한다.
3) Mount 상태로 Startup(pfile로 기동)
SQL> STARTUP MOUNT
4) spfile을 생성한다.
SQL> create spfile from pfile
5) DB Shutdown
SQL> SHUTDOWN IMMEDIATE
6) Mount 상태로 Startup(spfile로 기동)
SQL> STARTUP MOUNT
* 11g의 경우 2) 이후에 바로 4)로 spfile을 생성하고 6)으로 기동할 수 있다.
!------------------------------------------------------------
! SPFILE(서버 파라미터 파일)에서 NO ARCHIVE LOG모드로 전환하기
!------------------------------------------------------------
1) 자동 아카이브 모드를 false로 변경 한.
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_START=FALSE SCOPE=SPFILE;
2)DB shutdown
SQL> SHUTDOWN IMMEDIATE
3) mount 상태로 startup
SQL> STARTUP MOUNT
4) 데이터베이스를 no archive log mode로 전환.
SQL> ALTER DATABASE NOARCHIVELOG;
5) 데이타베이스 오픈
SQL> ALTER DATABASE OPEN;
6) 아카이브 로그 모드 상태 확인
SQL> ARCHIVE LOG LIST;
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함
아카이브 대상 C:\oracle\ora92\database\archive
가장 오래된 온라인 로그 순서 17
현재 로그 순서 19
=============================================================
[ 참고 ]
- 구루비(구 오라클 스터디) : http://www.gurubee.net/lecture/1873
- isCho.net : http://www.ischo.net/