ORACLE Database / WAS (iAS) / SQL 자료실 - 포기하지 않으면 실패하지 않는다!
Vote Reply Modify Delete Forward Prev Next List

  Author   : 조성환 [ ladmin ] Vote: 2206, Modifies: 2, Hit: 7238, Lines: 345, Category: Etc.
Oracle Log Mode (Archive, NoArchive) 변경 방법 [강추]

***********************************************************************************************************
Oracle에서 Online Backup을 받거나 완벽한 Recovery 작업을 수행하기 위해서는 DB를 Archive log mode로 운영하여야 한다.
***********************************************************************************************************


--아카이브모드--

데이타베이스가 아카이브모드에서 오픈되어있는 경우에는 온라인 백업이 가능한 상태이구요 따라서 문제 발생시 처리중인 트랜잭션 중 COMMIT된 부분들은 전부 복구 가능합니다..




--노아카이브모드---

데이타베이스에 문제가 발생해서 복구해야 할 때에는 처리중이거나 데이타베이스를 close 한 상태에서 완전 백업을 수행한 이후에는 처리한 트랙잭션들을 복구할 수 없습니다..

다시 말해 백업한 것만 가능하다는겁니다..

그리고 온라인에서는 복구가 불가능합니다..


그럼 일단 어떤 아카이브모드 인지를 알아보면..........



SVRMGR> select log_mode from v$database ;

LOG_MODE
------------
NOARCHIVELOG
1 row selected.

보시는데로 현재 노아카이브모드 입니다..

그럼 노아카이브모드를 아카이브모드로 만들어 보겠습니다..





1. initSID.ora file과 configSID.ora 에 다음의 parameter가 이미 setting 되어 있는지 확인한 후에 없을 경우 initSID.ora 에 setting한다.



(1) LOG_ARCHIVE_START = true


* ARCH process 가 기동

* log switch 발생 시 automatic archive를 수행한다.

  만약 이 parametrer가 false이면 manual archive를 실시하여야 한다.



(2) LOG_ARCHIVE_DEST = /oradata/arch


* archive 장소의 디렉토리와 확장자를 포함하지 않는 파일명을 지정.

* 여기에서 archive_file까지는 directory이며 마지막에 있는 arc는

 archive log file의 initial 명이다.

             

(3) LOG_ARCHIVE_FORMAT = %s.arc

or  LOG_ARCHIVE_FORMAT = T%TS%S.arc

or  LOG_ARCHIVE_FORMAT = ORCL_%t_%s.arc



* archive file의 확장자와 log sequence 번호의 형식을 지정.

* 이는 (2)에서 정의된 archive log의 initial file 명과 함께 나타난다.



 [ 예 ]  arc123.arc, arc124.arc (123과 124는 log sequence number 이다) 와 같은 형태의 화일이 생성된다.






 $ svrmgrl



           SVRMGR> connect internal

           SVRMGR> startup mount                - (1)

           SVRMGR> alter database archivelog;   - (2)

           SVRMGR> archive log list             - (3)

      Database log mode                ARCHIVELOG - (4)

      Automatic archival               ENABLED    - (5)

      Archive destination              /oradata/arch - (6)

      Oldest online log sequence       123 - (7)

      Next log sequence to archive     125 - (8)

      Current log sequence             125 - (9)

      SVRMGR> alter database open;         - (10)

      

      

(1)  DB를 startup mount까지만 한다.

(2)  이 Command를 이용하여 archivelog mode로 DB를 변경한다.

(3)  Archivelog mode로 변경되었는지를 확인한다.

(4)  DB가 Archivelog mode임을 나타낸다.
   만약 NOARCHIVELOG로 되어 있으면 변경되지 않은 것을 의미한다.

(5)  initSID.ora file에서 LOG_ARCHIVE_START parameter를 TRUE로 정의하였음을 나타내며 false인 경우에는 DISABLED로 나타난다.

(6)  initSID.ora file의 LOG_ARCHIVE_DEST parameter에서 정의한 archive할 장소이다.

(7)  3 개의 redo log 중 가장 오래된 redo log의 sequence가 123임을 의미한다.

(8)  다음에 archive 받을 file의 log sequence 번호를 나타낸다.

(9)  현재 사용 중인 redo log의 sequence가 125임을 의미한다.
   만약 이전부터 archivelog mode로 운영 중이었다면 여기에서 archivelog file은 log sequence 124까지 archiveing되어있다는 것을 의미한다.

(10) Archive mode로 변경 후 DB를 open한다.



참고로 현재 DB 서버가 Archive mode 로 잘 되었는지 확인하는 방법은.........

[sol40:ORCL] /oracle] $   sqlplus '/as sysdba'

SQL*Plus: Release 9.2.0.7.0 - Production on Wed May 31 05:09:02 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production

SQL>
SQL> archive log list ;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /oradata/arch
Oldest online log sequence     3
Next log sequence to archive   5
Current log sequence           5

SQL>
SQL> alter system switch logfile ;

System altered.

SQL>
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production


[sol40:ORCL] /oracle] $   cd /oradata/arch

[sol40:ORCL] /oradata/arch] $   ls -l
총 1236
drwxr-xr-x   2 oracle   dba          512  5월 31일  05:11 ./
drwxr-xr-x   7 oracle   dba          512  5월 27일  02:03 ../
-rw-r-----   1 oracle   dba       209920  5월 31일  05:11 ORCL_1_5.arc



Alter system 문장으로 로그스위치를 발생했을 때 해당데이터베이스에 운영하는 redo log file의 개수 넘어가도 lock 없이 계속 실행됩니다. 이는 인스턴트시 아카이브 서버 프로세서가 가동중이기 때문입니다.

alter system switch logfile 명령을 실행할수록 archive log 가 계속 떨어지겠죠...........






반대로, Archive mode 에서 NoArchive mode로 전환하는 방법은 다음과 같습니다.


먼저, 위에서 setting 했던 initSID.ora file 와 configSID.ora 에 있는 다음 parameter 앞에 “#”을 넣고 저장합니다.



# LOG_ARCHIVE_START = TRUE

# LOG_ARCHIVE_DEST = /oradata/arch

# LOG_ARCHIVE_FORMAT = %s.arc




$ svrmgrl

SVRMGR> connect internal

SVRMGR> shutdown immediate

SVRMGR> startup mount

ORACLE instance started.

Database mounted.

SVRMGR> alter database noarchivelog;

Statement processed.

SVRMGR> alter database open;

Statement processed.



중요한 작업이 빠졌습니다.

아카이브 전환후 반드시 (DB 를 셧다운 하시고 FULL BACKUP을 받으셔야 합니다.





---------------------------------------------------------------------------




==================================
데이타베이스를 COLD BACKUP 받는 방법
==================================


콜드 백업은 데이타베이스가 정상적으로 SHUTDOWN 된 상태에서 데이타 화일,  로그 화일, 콘트롤 화일을 모두 백업받는 것을 말한다.

SHUTDOWN 하지 않고 OPEN 된 상태에서 백업을 받으면 백업받은 내용을 나중에 사용할 수가 없으므로 유의해야 한다.



콜드 백업을 위해서 데이타베이스를 SHUTDOWN 할 때에는 NORMAL, IMMEDIATE 옵션을 사용해야 하며 ABORT 를 사용해서는 안 된다.

ABORT를 사용한 경우에는 SHUTDOWN 후에 다시 STARTUP 하고 NORMAL 로 SHUTDOWN 하도록 한다.



컨트롤 화일과 데이타 화일 및 로그 화일의 위치를 확인하여 이들을 tar, cpio, dd 등의 명령을 이용하여 백업 받도록 한다.

NT 에서는 COPY 명령이나 탐색기를 이용해서 백업을 받으면 된다.



(sqlplus 에 system 으로 접속후)


콘트롤 화일 확인 방법
---------------------

SQL> select name from v$controlfile ;

NAME
--------------------------------------------------------------------------------
/oradata/ORCL/control01.ctl
/oradata/ORCL/control02.ctl
/oradata/ORCL/control03.ctl




데이타 화일 확인 방법
---------------------

SQL> select name from v$datafile ;

NAME
--------------------------------------------------------------------------------
/oradata/ORCL/system01.dbf
/oradata/ORCL/undotbs01.dbf
/oradata/ORCL/cwmlite01.dbf
/oradata/ORCL/drsys01.dbf
/oradata/ORCL/example01.dbf
/oradata/ORCL/indx01.dbf
/oradata/ORCL/odm01.dbf
/oradata/ORCL/tools01.dbf
/oradata/ORCL/users01.dbf
/oradata/ORCL/xdb01.dbf

10 rows selected.




로그 화일 확인 방법
------------------

SQL> select member from v$logfile ;

MEMBER
--------------------------------------------------------------------------------
/oradata/ORCL/redo03.log
/oradata/ORCL/redo02.log
/oradata/ORCL/redo01.log




위에서 확인된 3종류 (v$controlfile, v$datafile, v$logfile) 의 화일들을 백업받으면 된다.

(오라클을 반드시 셧다운 시키고 백업받아야 함)



필요에 따라서는 파라미터 화일 (v$parameter) 까지 백업받는 것이 좋다.

파라미터 화일은 $ORACLE_HOME/dbs/init<SID>.ora 이다.

(NT 에서는 C:\ORANT\DATABASE\init<SID>.ora 화일이다.
보통은 initORCL.ora 라고 되어 있다.)



여기서 <SID>는 오라클 인스턴스 이름으로 환경변수 ORACLE_SID 로 지정이 되어 있다.
(NT 에서는 REGISTRY에 지정됨)



Prev: ORA-03113 : end-of-file on communication channel
Next: import 할 때 tablespace를 변경하려면
2006/05/31(05:42) from 59.30.129.220
CrazyWWWBoard 2000

Vote Reply Modify Delete Forward Prev Next List
(c) Nobreak Technologies, Inc.