본문 바로가기
정보관리(데이터베이스, DB)/오라클

Standby DataBase 구축하기

by 3604 2023. 11. 24.
728x90

출처: https://ldcc.tistory.com/entry/Standby-DataBase-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0

1. Standby DataBase 장점

데이터베이스 장애시 미리 백업 받아둔 datafile 과 archivelog 를 모두 restore 하여 복구하게 되는데 이경우 복구 시간이 길어 장애시간이 길어지게 된다.

이럴경우를 대비하여 미리 Standby Database 를 구성하여 Standby Database에 Recovery를 진행해

두고 Primary Database 장애 시 바로 Standby Database를 Active 시키면 Down Time을 최소화

할 수 있다.

 

2. Standby DataBase 구축절차

Standby DB 구성을 위해 Primary DB와의 datafile, archivelog 등의 sequence# 를 동기화 시켜야 하기 때문에 절차상 순서가 매우 중요하다

 

0) Standby DB가 구성될 시스템에 Oracle 을 Primary DB와 동일한 version 으로 install 한다

@ Primary DB path = /dbms/oracle/oradata/ORA

@ Standby DB path = /backup/dbms/oracle/oradata/ORA

 

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

Primary DB

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

1) Primary DB가 Open되어 있는 상태에서 Standby DB용 Control file을 생성하고 이를

   Standby DB에 Control file 로 복사

SQL> alter database create standby controlfile as '/dbms/oracle/oradata/ORA/stby01.ctl';

SQL> alter database create standby controlfile as '/dbms/oracle/oradata/ORA/stby02.ctl';

SQL> alter database create standby controlfile as '/dbms/oracle/oradata/ORA/stby03.ctl';

 

2) Primary DB의 초기 Datafile 을 Standby DB로 복사

   [방법1] dbf 파일을 ftp 로 전송

   [방법2] 오라클 DRD 초기화

            A. 초기화 대상 DRD 조회

            SQL> select tablespace_name, file_name, bytes/1024/1024 mega from

                 dba_data_files;

                 TABLESPACE_NAME       FILE_NAME                                  MEGA
                 -------------------- ---------------------------------------- ---------
                 USERS                 /dbms/oracle/oradata/ORA/users01.dbf         5
                 SYSAUX                /dbms/oracle/oradata/ORA/sysaux01.dbf      310
                 UNDOTBS1              /dbms/oracle/oradata/ORA/undotbs01.dbf      35
                 SYSTEM                /dbms/oracle/oradata/ORA/system01.dbf      490
                 EXAMPLE               /dbms/oracle/oradata/ORA/example01.dbf     100

 

            # mkdir dr_copy

            SQL> alter tablespace users begin backup;

            SQL> !cp /dbms/oracle/oradata/ORA/users01.dbf /dbms/oracle/oradata/ORA/dr_copy
            SQL> alter tablespace users end backup;
                   등등등....

            탬프파일은 그냥 복사한다.

            SQL> select name, bytes/1024/1024 mega from v$tempfile;

            NAME                                        MEGA
            ----------------------------------------  ---------            /dbms/oracle/oradata/ORA/temp01.dbf          20

           

           dr_copy를 압축으로 묶어서 dr 의 ../oradata/ORA/ 밑에 풀어놓는다

 

3) Primary DB의 Archivelog 파일을 Standby DB로 복사

 

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

Standby DB

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

4) 인스턴스를 nomount 모드로 구동한다

SQL> startup nomount

 

5) 경우에 따라 초기화 파일을 확인한다

   어떤 초기화 파일을 물고 올라가는지 확인하려면 

    /dbms/oracle/product/10.2.0/Db_1/dbs 경로에 spfileORA.ora 파일이 있으면 spfile 모드이고,

    없으면 pfile 모드

  

   [ pfile 인 경우 ]

    è initORA.ora 파일을 생성한다.

   è standby 구성 시 초기화 파일(initORA.ora)을 직접 수정한다

 DR시스템의 /dbms/oracle/product/10.2.0/Db_1/admin/ORA/pfile 경로에 생성된 init.ora.xxxx

 파일을 /dbms/oracle/product/10.2.0/Db_1/dbs 경로에 파일 이름을 변경하여 복사한다.

  # mv ./init.ora.xxxx  /dbms/oracle/product/10.2.0/Db_1/dbs/initORA.ora

 

[ spfile 인 경우 ]

è standby 구성 시 sqlplus 모드에서 alter 명령어로 구성한다

    SQL> show parameter file

 

  è Primary DB와 Standby DB간에 datafile, redo log file 이 위치하는 directory 가

    다를 경우  db_file_name_convert 와 log_file_name_convert를 사용하여 directory 이름

    중 다른부분을 치환 할 수 있도록 한다

    SQL> alter system set db_file_name_convert = 

         '/dbms/oracle/oradata/ORA','/backup/oracle/oradata/ORA' scope= spfile;

          //들어온 경로, 치환할 경로

 

6) Standby DB를 mount 및 recovery 적용한다

SQL> alter system set log_archive_dest_1='location=/dbms/oracle/product/10.2.0/Db_1/dbs/arch'

scope=both;

SQL> alter database mount standby database;

SQL> ALTER SYSTEM SET  log_archive_format= '%t_%s_%r.arc' SCOPE=SPFILE;

SQL> shutdown immediate

SQL> startup nomount

SQL> alter database mount standby database;

SQL> set autorecovery on;

SQL> recover managed standby database disconnect; <----- #1요렇게 바꿈
           Media recovery complete.

SQL> alter database archivelog;

 

7) 정합성 확인

Primary DB와 Standby DB간의 sequence#가 동기화 되어 있는지 확인한다

SQL> select max(sequence#) from v$log_history;

MAX(SEQUENCE#)

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

          1146

[출처] Standby Database 구축|작성자 모카빵
728x90
반응형