아카이브 로그는 컨트롤 파일을 통한 백업/복원(증분 백업)을 지원하는 외부 도구를 사용할 때 꼭 필요하다.
그런데 이 아카이브 로그는 여러가지로 귀찮고 불편하다. 공간 제한이 있어 꽉 차면 서비스가 내려가버린다든가, 로그 기록하느라 성능이 느려진다든가 등... 그래서 꼭 필요한 경우가 아니면 사용하지 않는 편이 좋을 것 같은데, 제길... 써야 하는 경우가 더 많다.
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라고 쓰지 않으면 전체 아카이브 로그가 몽땅 지워진다. 참고.
'Tech: > 일반·기타' 카테고리의 다른 글
Oracle 테이블 스페이스 내보내기, 가져오기 (1) | 2011.03.02 |
---|---|
Oracle 원격 DB 연결(DB LINK) (0) | 2011.03.02 |
Oracle 사용자 패스워드 사용기간 제한 없애기 (0) | 2011.03.02 |
Windows 7 (x64)에서 1680x1050 해상도 설정하기 (0) | 2011.01.23 |
원격 제어(원격 지원) 쉽게 하는 방법 (0) | 2010.12.19 |