블로그 이미지
redkite

카테고리

분류 전체보기 (291)
00.SI프로젝트 산출물 (0)
00.센터 운영 문서 (0)
01.DBMS ============.. (0)
01.오라클 (117)
01.MS-SQL (15)
01.MySQL (30)
01.PostgreSql (0)
01.DB튜닝 (28)
====================.. (0)
02.SERVER ==========.. (0)
02.서버-공통 (11)
02.서버-Linux (58)
02.서버-Unix (12)
02.서버-Windows (2)
====================.. (0)
03.APPLICATION =====.. (11)
====================.. (0)
04.ETC =============.. (0)
04.보안 (5)
====================.. (0)
05.개인자료 (1)
06.캠핑관련 (0)
07.OA관련 (1)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

아카이브 모드 변경

# NO 아카이브 모드로 변경
ALTER SYSTEM SET LOG_ARCHIVE_START = FALSE SCOPE=SPFILE;
alter database mount
alter database noarchivelog;
archive log list
alter database open;

# 아카이브 모드로 변경
select name, value from v$parameter
where name = 'log_archive_start'
or name = 'log_archive_dest'
or name = 'log_archive_format' ;

ALTER SYSTEM SET LOG_ARCHIVE_START = TRUE SCOPE=SPFILE;
archive log list
startup mount
alter database archivelog;
archive log list
alter database open;

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

Archive log mod 란?

우리가 오라클데이터베이스에 접속을해서 DML이나 DDL등의 명령어로 작업을 수행하면,
모든 작업의 기록이 리두로그파일에 저장이 된다.

작업의 양이 많아지면 리두로그파일에 기록하는 내용도 굉장히 많아지게 되고
그렇게 되면 데이터를 기록하기 위해서 리두로그파일을 늘려야 하는 일이 발생을 한다.

그런데 오라클 리두로그파일은 계속 증가하는것이 아니라 몇개의 리두로그파일을 만들어 놓고
번갈아 가면서 기록하는 구조로 되어 있다.(리두로그파일은 2개 이상있어야 한다.)

이렇게 번갈아 가면서 기록을 하게 되면 새로운작업의 내용이 예전의 작업내용을 덮어쓰므로
예전의 작업한 내용을 잃게 된다는 단점이 있다.

그래서 예전의 작업한 내용에 데이터 손실이 발생하면 복구하기 어렵다는 단점이 있다.

이런 단점을 해결하기 위한 방법이 리두로그파일의 내용을 다른 디렉토리에 자동으로 복사해서 저장하도록
운영하는 방법이다. 이렇게 운영하는 방법을 아카이브 로그 모드(Archive Log Mode)라고 한다.

오라클데이터베이스는 기본적으로 No Archive Log Mode이다. 그리하여 Archive Log Mode로 운영하기 위해서는
따로 설정을 해주어야 한다.




[ Oracle 8i 까지의 방법(Noarchive -> Archive) ]

텍스트로 만들어진 파라미터 화일을 사용하는 경우
Archive log mode로 운영하기 위해서는 다음과 같이 변경하여야 한다.

1. initSID.ora file(ex. initORCL.ora)과 configSID.ora(ex. configORCL.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 = /home/oracle7/dbs/archive_file/arc

* archive 장소의 디렉토리와 확장자를 포함하지 않는 파일명을 지정.
* 여기에서 archive_file까지는 directory이며 마지막에 있는 arc는
archive log file의 initial 명이다.
* 자신이 설치한 ORACLE_HOME/dbs/archive_file/arc 로 설정한다.

3) LOG_ARCHIVE_FORMAT = %s.log

* archive file의 확장자와 log sequence 번호의 형식을 지정.
* 이는 (2)에서 정의된 archive log의 initial file 명과 함께 나타난다.

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


2. 다음과 같이 작업하여 archive log mode로 변환한다.

$ 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 ?/dbs_ar/offline_log/offline - (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한다.


[ Oracle 9i 부터의 방법(Noarchive -> Archive) ]

바이너리로 만들어진 파라미터 화일을 사용하는 경우
Archive log mode로 운영하기 위해서는 다음과 같이 변경하여야 한다.

1. Parameter 확인

$sqlplus /nolog

SQL>connect sys/passwd@orcl as sysdba
Connected.
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /u01/oracle/dbs/
Oldest online log sequence 1
Current log sequence 3

SQL> select name, value from v$parameter
where name = 'log_archive_start'
or name = 'log_archive_dest'
or name = 'log_archive_format' ;

2. 다음과 같이 작업하여 archive log mode로 변환한다.

SQL> ALTER SYSTEM SET LOG_ARCHIVE_START = TRUE
SCOPE=SPFILE;

System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 89201304 bytes
Fixed Size 453272 bytes
Variable Size 67108864 bytes
Database Buffers 20971520 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /u01/oracle/dbs/archive/orcl/arc
Oldest online log sequence 1
Current log sequence 3
SQL> alter database archivelog;

Database altered.

SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/oracle/dbs/archive/orcl/arc
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
SQL> alter database open;

Database altered.


[ Oracle 8i 까지의 방법(Archive -> Noarchive) ]

반대로, archivelog mode에서 no archivelog mode로 전환하는 방법은 다음과같다.
archivelog mode에서 no archivelog mode로 전환하기 전에 데이터베이스는 반드시
immediate 또는 normal 로 셧다운 되어야만 전환이 가능 하다.

먼저, 위에서 setting 했던 initSID.ora file 와 configSID.ora 에 있는
다음 parameter 앞에 # 을 넣고 저장한다.(주석처리!!)

#LOG_ARCHIVE_START = TRUE
#LOG_ARCHIVE_DEST = /home/oracle7/dbs/archive_file/arc
#LOG_ARCHIVE_FORMAT = %s.log

$ 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.


[ Oracle 9i 부터의 방법(Archive -> Noarchive) ]

Noarchive log mode로 운영하기 위해서는 다음과 같이 변경하여야 한다.

1. Parameter 확인

$sqlplus /nolog

SQL>connect sys/passwd@orcl as sysdba
Connected.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/oracle/dbs/archive/orcl/arc
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3

SQL> select name, value from v$parameter
where name = 'log_archive_start'
or name = 'log_archive_dest'
or name = 'log_archive_format' ;

2. 다음과 같이 작업하여 Noarchive log mode로 변환한다.

SQL> ALTER SYSTEM SET LOG_ARCHIVE_START = FALSE
SCOPE=SPFILE;
System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 89201304 bytes
Fixed Size 453272 bytes
Variable Size 67108864 bytes
Database Buffers 20971520 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> alter database noarchivelog;

Database altered.
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /u01/oracle/dbs/archive/orcl/arc
Oldest online log sequence 1
Current log sequence 3
SQL> alter database open;
Database altered.

'01.오라클 > 003.DB 백업 및 복구' 카테고리의 다른 글

[오라클]아카이브 복구  (0) 2012.12.19
[오라클]아카이브 모드 변경  (0) 2012.12.19
[오라클]VMware 백업 복구 작업  (0) 2012.12.19
[오라클]FlashBack  (0) 2012.12.19
[오라클]Data Pump  (0) 2012.12.19
Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함