개발은 너무해

10g Archive Mode로 변경 본문

Oracle/Oracle Study

10g Archive Mode로 변경

까칠 평생초보 2008.10.01 14:58

C:\> sqlplus "/as sysdba"

 

archive mode로 변경하기 전에 확인 해 봐야 할 것!!

 

SQL> archive log list

데이터베이스 로그 모드              아카이브 모드가 아님
자동 아카이브             사용 안함
아카이브 대상            USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서     32
현재 로그 순서           33

SQL>show parameter log_archive_max_processes; (활성화 되고 있는 archive process 확인)

NAME                                 TYPE               VALUE
--------------------------- --------------  -------
log_archive_max_processes  integer                      2

 

process를 늘려주고 싶을 때 : alter system set log_archive_max_processes=3;

저는 default 값으로 활성화 시키도록 하겠습니다.

 

이제 본격적으로 간단한 설정을 해보도록 하겠습니다.

 

archive file 저장 위치를 지정해준다.

SQL> alter system set log_archive_dest_1='location=c:\PROD\DISK1\Archive\arch01 reopen';

SQL> alter system set log_archive_dest_2='location=c:\PROD\DISK2\Archive\arch02 reopen';

 

cf.

mandatory 아카이브하는 작업이 성공적으로 완료되어야 온라인 리두 로그파일을 겹쳐 쓸 수있음

optional : 아카이브하는 작업이 성공적으로 완료되지 않은 경우에도 온라인 리두 로그 파일을

              재사용할 수 있음.

reopen : 키워드와 함께 숫자를 지정하면, 실패 후 지정된 시간(초)이 경과한 다음 다시 쓰기를 시도함.

             default = 300, ex) reopen=500 

 

REOPEN을 지정하지 않은 경우 선택 대상에서 발생한 오류는 기록된 다음 무시되고 더 이상 이 대상으로

리두 로그가 보내지지 않는다. 필수 대상에서 오류가 발생하면 아카이브가 성공적으로 수행될 때까지 온라인 리두 로그를 재사용할 수 없다.

 

저는 process를 2개를 활성화 하였기 때문에 경로를 2개를 지정해주었습니다. 

서로 다른 디스크에 저장을 시켜주어야 하지만 여건상 같은 디스크에 넣을수 밖에 없었네요.^^

show parameter log_archive_dest 를 보면 위치가 설정된 것을 확인해 보실수 있습니다.

 

* process를 여러개 지정해주는 이유

1. 대량의 트랙잭션 로드 작업 과 동시에 다른 작업들이 맞물려 wait가 발생되는 archive 이목현상을

    방지하기 위해서

2. archive log 파일을 다중화 하여 복구를 대비하기 위하여(archive file도 깨질수있기때문임.)

 

 

SQL> alter system set log_archive_format='ARC%T%S%R.ARC' scope=spfile;

※ 주의할 점은 9i까지는 %s만 넣어도 상관없었지만 10g부터는 %t%s%r이 반드시 들어가야한다.

    참고로 저는 %s%t 만 넣었다가 DB가 startup이 안되서 복구시키느냐구 고생을 좀 하였습니다.^^;;

    제가 경험한 에러 및 복구 방안은 Oracle Error Catalog에 추후 등록시키도록 하겠습니다.

 

SQL> shutdown immediate;

데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.

SQL> startup mount;

ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  285212672 bytes
Fixed Size                  1287016 bytes
Variable Size              92277912 bytes
Database Buffers          188743680 bytes
Redo Buffers                2904064 bytes
데이터베이스가 마운트되었습니다.

SQL> alter database archivelog;

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

 

SQL> alter database open;

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

 

이렇게 하면 archive로 설정이 되었습니다.

잘 되었는지 확인 해 봅시다.

 

SQL> archive log list  --처음에  확인했던 명령어이죠. 

데이터베이스 로그 모드              아카이브 모드
자동 아카이브             사용
아카이브 대상            C:\oraclexe\oradata\Archive\Arch2
가장 오래된 온라인 로그 순서     36
아카이브할 다음 로그   37
현재 로그 순서           37

 

SQL> alter system archive log current;

시스템이 변경되었습니다.

SQL>

 

Archive file이 저장되는 경로에 가서 파일이 생성되었는지 확인해 봅시다.

잘 생성되었다면 archive mode로 이상없이 변경 된 것입니다.

9i보다는 많이 간단해 진 것 같습니다.


또한 log_archive_start는 9i에서는 true로 설정을 해주어야했지만,

10g에서 obsolete parameter 입니다. 설정에 상관없이 true로 인식을 합니다.


--추가글(20100429)

만약 archive process를 2개로 가동시키다가 1개로 줄이고 싶다면 archive모드를 해제한후 다시 설정을 해야한다.

(지금까지 내가 알기로는 그렇다.)

'Oracle > Oracle Study' 카테고리의 다른 글

Partition Table(1) - Create  (0) 2009.06.17
Row Migration  (0) 2008.11.30
10g Archive Mode로 변경  (0) 2008.10.01
Rollup & Cube & Grouping 차이  (0) 2008.05.16
with grant option & with admin option 차이  (0) 2008.05.14
view에 사용되는 with check option  (0) 2006.10.20
0 Comments
댓글쓰기 폼