작업 순서

전체 작업순서는 다음과 같다.

  1. Primary, Standby DB 설치
  2. 환경 설정 값 지정
  3. tnsnames.ora 파일 수정
  4. Standby Server Directory 생성
  5. Primary DB archive log mode로 변경
  6. Primary DB 데이터 가드 설정 작업
  7. Primary 리스너 띄우기
  8. RMAN 작업 설정
  9. Standby DB password file 설정
  10. Standby DB init file 설정
  11. Standby DB 리스너 띄우기
  12. Standby DB nomount startup
  13. RMAN으로 DG 구성
  14. Standby 서버 open 작업

작업 내용

자세한 내용은 다음과 같다.

1. Primary, Standby DB 설치
일반 설치 작업 진행 한다.

2. 환경설정값 지정
ORACLE_SID, DB_NAME을 지정한다.

3. tnsnames.ora 파일을 수정한다.
각 tnsnames.ora에 두서버의 정보를 모두 등록한다.

4. Standby DB 서버에 추가적인 디렉토리를 생성한다.
DB_NAME 으로 된 이름과 SID용으로 adump용, dbdump용, pfile용, trace용 디렉토리를다 미리 만들어 놓는다.
사용할 데이터 파일 위치도 미리 만들어 놓는다.

5. no archive mode이면 archive mode로 수정한다.


SYS@TEST1 >select status from v$instance;
STATUS
------------
OPEN
SYS@TEST1 >alter system set log_archive_dest_1='location=/backup01/ARC01 MANDATORY' scope=spfile;
System altered.
SYS@TEST1 >alter system set log_archive_dest_2='location=/backup02/ARC02 OPTIONAL' scope=spfile;
System altered.
SYS@TEST1 >alter system set log_archive_max_processes=2 scope=both;
System altered.
SYS@TEST1 >alter system set log_archive_format='TEST1_%t_%s_%r.arc' scope=spfile;
System altered
SYS@TEST1 >shutdown immediate;
SYS@TEST1 >alter database archivelog;
SYS@TEST1 >alter database open;
SYS@TEST1 >archive log list;

6. Primary DB 데이터 가드 설정 작업

Primary 로서의 설정 작업을 진행한다.


SYS@TEST1 >alter database add standby logfile ('/data01/oradata/TEST1/stdbylog01.rdo','/data02/oradata/TEST1/stdbylog01-1.rdo') size 300M;
Database altered.
SYS@TEST1 >alter database add standby logfile ('/data01/oradata/TEST1/stdbylog02.rdo','/data02/oradata/TEST1/stdbylog02-1.rdo') size 300M;
Database altered.
SYS@TEST1 >alter system set log_archive_config='dg_config=(TEST1,TEST2)';
System altered.
SYS@TEST1 >alter system set log_archive_dest_3='service=TEST2 async valid_for=(online_logfile,primary_role) db_unique_name=TEST2';
System altered.
SYS@TEST1 >alter system set db_unique_name=TEST1 scope=spfile;
System altered.
SYS@TEST1 >grant sysdba to system;
Grant succeeded.
SYS@TEST1 >alter system set db_recovery_file_dest_size=5G;
System altered.
SYS@TEST1 >alter system set standby_file_management=auto;
System altered.
SYS@TEST1 >alter database force logging;
Database altered.
SYS@TEST1 >alter system set fal_client=TEST1;
System altered.
SYS@TEST1 >alter system set fal_server=TEST2;
System altered.

7. Primary 리스너 띄우기
리스너를 띄운다. Primary와 Standby사이에 접근에 문제 없게 설정한다.

8. RMAN 작업 설정
rman 실행할 파일을 생성한다.


connect auxiliary system/passwd@TEST2
run {
        duplicate target database for standby from active database
        dorecover
        spfile
        parameter_value_convert 'TEST1','TEST2'
        set db_unique_name='TEST2'
        set control_files='/data01/oradata/TEST2/control01.ctl','/data01/oradata/TEST2/control02.ctl','/data02/oradata/TEST2/control03.ctl'
        set db_file_name_convert='/data01/oradata/TEST1','/data01/oradata/TEST2','/data02/oradata/TEST1','/data02/oradata/TEST2'
        set log_file_name_convert='/data01/oradata/TEST1','/data01/oradata/TEST2','/data02/oradata/TEST1','/data02/oradata/TEST2'
        set cluster_database='FALSE'
        set remote_listener=''
        set local_listener=''
        set fal_client='TEST2'
        set fal_server='TEST1'
        set log_archive_dest_1='location=/backup01/ARC01'
        set log_archive_dest_2='location=/backup02/ARC02'
        set log_archive_dest_3='service=TEST1 LGWR ASYNC valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=TEST1'
        set log_archive_config='dg_config=(TEST1,TEST2)'
        set service_names='TEST2';
        sql "alter system archive log current";
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
}


9. Standby DB password file 설정
Primary file의 password 파일을 가져와서 Standby DB용 password file로 이름을 수정한다.

10. Standby DB init file 설정
init.ora 파일을 만든다. 이때 db_name을 ORACLE_DB_NAME으로 설정한다.

11. Standby DB 리스너 띄우기
리스너 파일을 수정하여 리스너를 띄우는데 Standby DB는 다음과 같은 정보가 들어가야 한다.


SID_LIST_LISTENER =
   (SID_LIST =
      (SID_DESC =
         (GLOBAL_DBNAME = SID )
         (ORACLE_HOME = /oracle/product/11.2.0 )
         (SID_NAME = SID )
       )
    )
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER = OFF

설정 후 Standby DB와 PrimaryDB간 접속이 잘되는지 테스트 해본다.

12. Standby DB nomount startup


SYS@TEST1>shutdown
SYS@TEST1>startup nomount pfile=$ORACLE_HOME/dbs/initSID.ora

13.RMAN으로 DG 구성

8번에서 설정한 파일을 rman으로 접속해서 실행한다.


shell>rman target /
RMAN> @/oracle/make_dg.sql


14. Standby 서버 open 작업
Standby DB에서 마지막 설정 작업을 한다.


SYS@TEST2 >select status from v$instance;
STATUS
------------
MOUNTED
SYS@TEST2 >alter database recover managed standby database using current logfile disconnect;
Database altered.
SYS@TEST2 >alter database recover managed standby database cancel;
Database altered.
SYS@TEST2 >alter database open read only;
Database altered.
SYS@TEST2 >alter database recover managed standby database using current logfile disconnect;
Database altered.