아카이브 로그는 컨트롤 파일을 통한 백업/복원(증분 백업)을 지원하는 외부 도구를 사용할 때 꼭 필요하다.

그런데 이 아카이브 로그는 여러가지로 귀찮고 불편하다. 공간 제한이 있어 꽉 차면 서비스가 내려가버린다든가, 로그 기록하느라 성능이 느려진다든가 등... 그래서 꼭 필요한 경우가 아니면 사용하지 않는 편이 좋을 것 같은데, 제길... 써야 하는 경우가 더 많다.



1. 아카이브 로그 사용하지 않도록 설정

명령어는 간단하다. alter database noarchivelog; 이거 한 줄이면 되는데 이걸 쓰기 위한 절차가 좀 복잡하다.

그래서 실행 예제를 통째로 올린다.


-----


C:\Users\Administrator>sqlplus /nolog

SQL*Plus: Release 11.1.0.7.0 - Production on 수 12월 22 20:32:59 2010

Copyright (c) 1982, 2008, Oracle.  All rights reserved.

SQL> conn /as sysdba
연결되었습니다.
SQL> shutdown abort
ORACLE 인스턴스가 종료되었습니다.
SQL> startup mount
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 6881345536 bytes
Fixed Size                  2130160 bytes
Variable Size            4831842064 bytes
Database Buffers         2013265920 bytes
Redo Buffers               34107392 bytes
데이터베이스가 마운트되었습니다.
SQL> alter database noarchivelog;

데이타베이스가 변경되었습니다.

SQL> alter database open;

데이타베이스가 변경되었습니다.

SQL> archive log list;
데이터베이스 로그 모드              아카이브 모드가 아님
자동 아카이브             사용 안함
아카이브 대상            USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서     95
현재 로그 순서           97
SQL> exit
Oracle Database 11g Release 11.1.0.7.0 - 64bit Production에서 분리되었습니다.



2. 아카이브 로그 크기 바꾸기

기본적으로 200MB(?)정도 잡혀 있는 듯 하다. 그런데 이게너무 적다. 변경이 잦은 DB인 경우, 순식간에 꽉 찬다.

꽉 차면 ORA-19809: limit exceeded for recovery files 에러가 발생하면서 서비스가 내려간다. 즉 접속이 안된다.

그래서 좀 늘려줄 필요가 있다.


- 먼저 확인하는 방법.


SQL> set lines 100
SQL> col name format a60
SQL> select    name
,    floor(space_limit / 1024 / 1024) "Size MB"
,    ceil(space_used  / 1024 / 1024) "Used MB"
from    v$recovery_file_dest
order by name;


- 20GB로 바꾸는 방법.


SQL> alter system set db_recovery_file_dest_size=21474836480 scope=both;


여기에 실은 쿼리는 아래 사이트에서 가져왔다.

http://www.shutdownabort.com/errors/ORA-19809.php



3. 아카이브 로그 경로 바꾸기

이건 굳이 구구절절 설명이 필요없을 듯. 근데 특정 백업 소프트웨어를 사용하는 경우 이외에는, 필요할 때가 있을까?


-- 원래 archive log 경로
SQL> alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST' scope=spfile;

-- archive log 경로 변경
SQL> alter system set log_archive_dest_1='LOCATION=D:\ARCHIVELOG' scope=spfile;



4. 아카이브 로그가 꽉 차서 서비스가 내려간 경우 해결 방법

아카이브 로그를 지우면 된다.

백업 소프트웨어를 이용해서 백업을 하면서 삭제해도 되지만 그 방법은 설명이 필요없는 군더더기이므로 패스.

아카이브 로그를 삭제하는 방법은 아래와 같다.

간단히 설명하자면, 복구 관리자로 접속해서 지우는거다.

(보안상 패스워드는 * 처리했음)


C:\> rman target system/****** nocatalog


rman> crosscheck archivelog all;
rman> delete expired archivelog all;


위 마지막 줄에서 expired라고 쓰지 않으면 전체 아카이브 로그가 몽땅 지워진다. 참고.




Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]