블로그 이미지
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. 12141


10g-standbyDB생성.pdf


database crash 시 backup받아둔 datafile과 archive file을 모두 restore하고,
recover하는 작업은 경우에 따라 고객의 요구 사항보다 길어지는 경우가 종종
있다.
이런 경우 미리 standy db를 구성하여 standby db에 recovery를 진행해 두고,
piramry db crash시 바로 stadnby db와 연결하면, db down time을 최소화하는데
많은 도움이 된다.

Oracle 8.1부터 이 standby db에 새로운 기능이 추가되어, 이전 version에서,
주기적으로 archive file 적용 및 recover 작업을 수행해야 하는 필요를 덜어
주었다.
단, Automated Standby database Feature는 8i~10g Standard Edition에서는
지원하지 않는다.

이 문서에서 자세한 설정 방법 및 추가된 기능들을 확인한다.

1. 추가된 기능 정리
(1) primary db에서 archive file생성시 standby db에도 자동 전달

(2) standby db에 전달된 archive file이 자동으로 standby db에 적용

(3) standby db activate없이, standy db를 read only mode로 open

2. 구성 절차

(1) standby db가 구성될 system에 oracle을 primary db와 동일한 version으로
install한다.
- OS는 primary db와 동일해야 한다.
- database는 install할 필요없이, software만 install하면 된다.
- datafile, controlfile, redo log file이 생성될 directory를 만들어
둔다.
(가능하면 primary db와 동일한것이 좋다),

(2) primary db의 init.ora를 standby db에 copy한다.
- primary db의 $ORACLE_HOME/dbs/initSID.ora file을 standby db에
copy한다.
- initSID.ora file에 ifile=로 정의된 file이 있다면 그 file도 해당
directory에 copy한다.
- 이러한 initial parameter중 background_dump_dest, user_dump_dest,
core_dump_dest, archive_log_dest 등에 지정된 directory도 standby 쪽,
server에 생성해둔다.

(3) primary db에 multiple archive destination을 위한 parameter지정
다음과 같은 형태로 primary db를 위한 archive parameter외에,
standby db쪽에 자동으로 archive file이 생성되도록 destination을
initSID.ora file에 지정한다.

log_archive_start = true
log_archive_dest_1 = "location=/user/oradata/archive"
log_archive_format = arch%s.arc

log_archive_dest_2 = 'SERVICE=sby OPTIONAL REOPEN=60'
log_archive_dest_state_2 = ENABLE

- 이 예에서 sby라는 것은 primary db의 tnsnames.ora file에 미리
정의되어 있어야 하며, standby db에 대한 description을 가져야 한다.
- REOPEN은 standby db쪽으로 archive가 실패한경우 지정된 초만큼 후에
다시 archive를 시도하라는 의미이다.
- OPTIONAL의 의미는 지정된 archive가 실패하는 경우라도 primary db의
log_archive_dest_1에 지정된 곳에 archive만 성공하면 archive작업을
중단없이 계속 진행하라는 것이다.

(4) standby db의 initSID.ora file 수정

primary db에서 자동으로 전달되어온 archive file이 위치하게 될
destination과 datafile이나 redo log file이 위치할 directory 구조가
primary db와 다른 경우를 대비한 parameter를 다음 예와 같이 설정한다.

standby_archive_dest=/user/oradata/archive

log_archive_start = true
log_archive_dest_1 = "location=/user/oradata/archive"
log_archive_format = arch%S.ARC

db_file_name_convert="PROD","SBY"
log_file_name_convert="PROD","SBY"

- standby_archive_dest는 primary db에서 multiple archive destination을
지정하는 경우 자동으로 생성될 archive file의 위치를 나타낸다.
- standby_archive_dest뒤에는 log_archive_dest와 같은 location=은
적으면 안된다. 적을시엔 자동으로 archive가 전달되지 않고, primary db의
alert.log에 오류가 기록된다.
- 실제 recover시나 이후 open되어 archive가 생성되는 시에는
log_archive_dest 부분이 참조된다.

- db_file_name_conver나 log_file_name_convert의 경우는, primary db와
standby db간에 datafile, redo log file이 위치하는 directory가 다른
경우 directory 이름중 다른 부분을 치환하도록 하는 것이다.

이 경우 primary db는 /user/oradata/PROD directory에 file이 존재하고,
standby db는 /user/oradata/SBY directory에 위치하는 경우에 대한 예이다.

- 만약 datafile이 여러군데 나뉘어져 있어 이런 변경 부분이 더 필요하다면
다음과 같이 할 수 있다.

db_file_name_convert=('/dbs/t1/','/dbs/t1/s_','dbs/t2/','dbs/t2/s_')
- WindowsNT의 경우는 반드시 directory이름을 반드시 대문자로 하여야 한다.

(5) standby db용 controlfile을 생성
다음 문장을 primary db에서 수행한다. 이후 이렇게 생성된 file은
standby db쪽으로 옮겨질 것이다.

SQL> alter database create standby controlfile as
'/user/oradata/temp/control01.ctl';

(5) primary db의 datafile을 backup받아둔다.
db를 shutdown 시켜 cold backup을 받거나, hot backup을 받는다.
tape등에 backup받는 대신 바로 ftp 등으로 standby db disk로
옮겨도 된다.

(6) 위의 (4),(5)에서 만들어진 controlfile과 datafile을 standby db쪽으로
옮긴다.

(7) standby db에서 다음과 같이 수행한다.

os> sqlplus internal
SQL> startup nomount
SQL> alter database mount standby database;
SQL> recover managed standby database;

- 만약 recover managed standby database대신에 그냥
recover standby database하면, ora-279, 280, 289가 발생하면서,
생성된 archive를 manual하게 적용하면 된다.

(8) standby db에서 primary db가 운영중에 test나 다른 목적으로 data를 읽고자
한다면 read only로 open가능

SQL>alter database open read only;

(9) primary db가 crash가 발생하여 standby db를 운영하고자 한다면 다음과 같이
activate시켜야 하며, 이렇게 한 이후로는 이 standby db는 standby 의 속성은
잃게 되며, 이후에 다시 standby db로 구축하려면 다시 (5)번부터 작업을
재수행하여 구축하여야 한다.

SQL>alter database activate standy database;
SQL>shutdown
SQL>startup

- shutdown후 이제는 더 이상 standby db가 아니므로 primary성격의 multiple
archive destination지정 등을 원하는 경우 parameter를 추가하면 된다.

3. managed recover, read only mode open 관리
(1) managed recover
recover managed database를 수행한 창은 계속 새로 전달되온 archive file을
자동으로 recovery를 시켜준다.
이때 필요에 의해 이 자동 recovery를 중단하고자 한다면,
standby에서 다른 session을 연결하여 다음과 같이 수행하면 된다.

SQL>alter database recover managed standby database cancel;

이렇게 하면,
recover managed standby 상태의 창에서,
ora-283, ora-16037 메시지와 함께, managed recovery가 중단되고,
SQL혹은 SVRMGR prompt상태가 된다.

recover managed standby database와 일반, recover standby database는 필요에
따라, 선택하여 사용하면 되며, recover managed standby databse의 경우 이
문장을 실행한 이후에 생성된 archive file만을 자동 recovery한다.
즉, recover managed standby database문장 수행전에 미리 전달되어 온 archive
file이 있다면, 일단 먼저 recover standby database문장을 통해 recovery를
수행한 이후에, recovey managed standby database문장을 수행하여야 한다.

(2) read only mode open

standby db를 standby db 속성은 그대로 유지하면서 dml 외에 data나 dictionary
조회가 필요한 상황에서는
alter database open read only문장을 수행하여 read only mode로 open할 수 있다.

이렇게 조회후에, 다른 작업없이 recover 문장을 수행하면 다시 mount상태가 되는
것이며, 필요하면 다시 open read only를 하여야 한다.

standby db는 운영 중에 shutdown가 mount, open을 마음대로 할 수 있으나
그 때마다 반드시,
startup nomount;
alter database mount standby database;
(필요한 경우 alter database open read only)
문장을 통해 mount나 open 상태가 되도록 하여야 한다.


Reference Documents
-------------------

<Note:74185.1> Standby Database and Oracle 8.1
<Note:70233.1> How to Create a Oracle 8i Standby Database

Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함