Data Guard의 대기 데이터베이스 만들기

기본 데이터베이스가 Data Guard를 준비한 후에는 대기 사이트에 복제할 수 있습니다. 다음 가이드에서는 활성 중복을 사용하여 일관된 데이터베이스 사본을 만듭니다.

참고로 이 가이드에는 다음 예시가 사용되었습니다.

데이터베이스 고유 이름 서버 호스트 이름 RAC 인스턴스 이름 역할
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 기본
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 대기

이 가이드에서 Oracle을 실행하는 베어메탈 솔루션 서버는 다음 환경 변수로 구성됩니다.

환경 변수 이름
ORACLE_BASE /apps/oracle/oracle_base
ORACLE_HOME /apps/oracle/19.0.0/db_home1

설정에 따라 환경 변수 경로를 수정해야 할 수 있습니다.

대기 데이터베이스 설정

데이터베이스 연결 구성

대기 위치의 각 베어메탈 솔루션 서버에 로그인하고 $ORACLE_HOME/network/admin/tsnames.ora 파일을 수정하여 넷 서비스 구성을 업데이트합니다.

DBDG_SITE2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE2) (UR=A)
   )
 )

DBDG_SITE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE1)
    )
  )

임시 리스너 구성

다른 데이터베이스 연결에 사용되는 리스너를 다시 시작하지 않도록 데이터베이스 중복은 임시 리스너를 사용하여 수행됩니다. 이 예시에서는 포트 1523을 사용하지만 클러스터 간의 통신을 위해 열려 있는 모든 포트를 사용할 수 있습니다. 데이터베이스 중복 후 이 임시 리스너를 삭제합니다.

  1. 데이터베이스 중복 프로세스 중에 사용할 대기 위치의 첫 번째 베어메탈 솔루션 서버에 로그인합니다. $ORACLE_HOME/network/admin/listener.ora 파일을 수정하여 네트워크 서비스 구성을 업데이트합니다.

    LISTENER_DBDG_SITE2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523))
        )
      )
    
    SID_LIST_LISTENER_DBDG_SITE2 =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL)
          (ORACLE_HOME = ORACLE_HOME)
          (SID_NAME = DBDG_SITE21)
        )
      )
    ADR_BASE_LISTENER = /apps/oracle/oracle_base
    
  2. 임시 리스너를 시작합니다.

    lsnrctl start LISTENER_DBDG_SITE2
    

대기 데이터베이스 준비

  1. 각 데이터베이스 인스턴스에 감사 로그를 저장할 디렉터리가 필요합니다. 대기 데이터베이스 위치의 각 베어메탈 솔루션 서버에 감사 파일 디렉터리를 만듭니다.

    mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
    
  2. 이전에 대기 데이터베이스 서버에 복사한 $ORACLE_HOME/dbs/initDBDG_SITE21.ora 파일을 수정합니다.

    1. db_unique_name을 새로운 대기 데이터베이스 이름으로 설정합니다.
    2. 대기 데이터베이스의 인스턴스 이름을 반영하도록 인스턴스별 매개변수를 수정합니다. 다음은 몇 가지 예시입니다.
      • instance_number
      • thread
      • undo_tablespace
    3. 이전 단계에서 만든 디렉터리를 사용하도록 audit_file_dest 매개변수를 설정합니다.
    4. 각 위치의 ASM 디스크 그룹이 다른 이름을 사용하는 경우 새 파일 위치와 일치하도록 db_file_name_convertlog_file_name_convert 매개변수를 수정합니다.
    5. control_files 매개변수를 주석 처리합니다.

    다음 예시는 이 가이드에 제공된 예시를 사용하여 수정한 데이터베이스 매개변수 파일을 보여줍니다. 매개변수 파일에는 데이터베이스 설정과 관련된 추가 매개변수가 포함됩니다. 대기에 대한 수정이 필요한 매개변수만 표시됩니다.

    *.db_unique_name='DBDG_SITE2'
    DBDG_SITE21.instance_number=1
    DBDG_SITE22.instance_number=2
    DBDG_SITE21.thread=1
    DBDG_SITE22.thread=2
    DBDG_SITE21.undo_tablespace='UNDOTBS1'
    DBDG_SITE22.undo_tablespace='UNDOTBS2'
    *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump'
    #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'
    
  3. oraenv 명령어가 대기 데이터베이스의 환경 변수를 설정할 수 있도록 /etc/oratab 파일에 항목을 추가합니다.

    DBDG_SITE21:ORACLE_HOME:N
    

대기 데이터베이스 만들기

  1. 대기 데이터베이스에 연결할 수 있도록 ORACLE_SID 환경 변수를 설정하세요.

    source oraenv <<< "DBDG_SITE21"
    

    The Oracle base has been set to /apps/oracle/oracle_base 응답이 표시될 것입니다.

  2. 기본 데이터베이스를 복제하기 전에 한 노드에서 대기 인스턴스를 수동으로 시작해야 합니다. 대기 위치에 있는 첫 번째 베어메탈 솔루션 서버에 로그인하고 SQL*Plus를 시작한 후 pfile를 사용하여 nomount mode에서 대기 데이터베이스를 시작합니다.

    sqlplus / as sysdba
    
    STARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    

    성공하면 다음 예시와 비슷한 응답이 표시됩니다.

    ORACLE instance started.
    Total System Global Area 1.2885E+10 bytes
    Fixed Size 15988824 bytes
    Variable Size 1845493760 bytes
    Database Buffers 1.1006E+10 bytes
    Redo Buffers 17563648 bytes
    
  3. 인스턴스를 시작한 후 SQL*Plus를 종료합니다.

    EXIT;
    
  4. 대기 데이터베이스 서비스에 대한 연결을 확인합니다. 기본 데이터베이스 위치의 각 베어메탈 솔루션 서버에서 SQL*Plus를 사용하여 대기 인스턴스에 연결을 시도합니다. SYS 원격 로그인 비밀번호를 수동으로 입력하여 인스턴스에 연결합니다.

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    성공하면 인스턴스 매개변수를 확인할 수 있는 표준 SQL*Plus 메시지가 표시됩니다.

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    다음과 비슷한 응답이 표시됩니다.

                    NAME        TYPE                          VALUE
        ---------------- ----------- ------------------------------
          db_unique_name      string      DBDG_SITE2
    
  5. DB_UNIQUE_NAME 매개변수를 확인한 후 SQL*Plus를 종료합니다.

    EXIT;
    
  6. 복구 관리자에 연결한 후 duplicate 명령어를 실행하여 활성 기본 데이터베이스에서 대기를 복제합니다.

    rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
    
    DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
    

    성공하면 처리된 후 다음 예시와 비슷한 메시지가 표시됩니다.

    Finished Duplicate Db at ...
    
  7. 복구 관리자를 종료합니다.

    EXIT;
    

대기 데이터베이스 만들기 완료

  1. 데이터베이스 중복 중에 ASM은 대기 데이터베이스에 대한 새 제어 파일을 만듭니다. 새로운 대기 인스턴스에 연결하고 새 제어 파일 이름을 가져오세요. 다음 예시에서는 +DATA+RECO 디스크 그룹에 저장된 두 개의 제어 파일을 보여줍니다.

    sqlplus / as sysdba
    
    SET LINESIZE 140
    COLUMN NAME FORMAT a15
    COLUMN VALUE FORMAT a125
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';
    

    제어 파일 이름이 '값' 필드에 표시됩니다.

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. 이전 단계의 제어 파일 이름을 기록하고 $ORACLE_HOME/dbs/initDBDG_SITE21.oracontrol_files 매개변수 항목을 새 값으로 바꿉니다. 제어 파일이 여러 개 있는 경우 각 파일을 작은따옴표로 묶어 쉼표로 구분하세요.

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. SQL*Plus로 대기 데이터베이스에 연결하고 수정된 pfile에서 새 spfile을 만듭니다.

    sqlplus / as sysdba
    
    CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    
  4. asmcmd 명령어를 사용하여 비밀번호 파일을 ASM 디스크 그룹에 복사합니다.

    asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
    
  5. 대기 데이터베이스 인스턴스를 종료하고 임시 pfile 및 비밀번호 파일을 삭제합니다.

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. 대기 데이터베이스 위치의 첫 번째 베어메탈 솔루션 서버에서 데이터베이스 중복에 사용되는 임시 리스너를 중지합니다.

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. 대기 데이터베이스 위치의 첫 번째 베어메탈 솔루션 서버에 있는 $ORACLE_HOME/network/admin/listener.ora 파일에서 임시 항목을 삭제합니다.

  8. srvctl 명령어를 사용하여 새 대기 데이터베이스 및 인스턴스를 클러스터 레지스트리에 추가합니다.

    srvctl add database \
      -db DBDG_SITE2 \
      -oraclehome /apps/oracle/19.0.0/db_home1 \
      -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \
      -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \
      -role PHYSICAL_STANDBY \
      -startoption MOUNT
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE21 \
      -node site2db1
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE22 \
      -node site2db2
    
  9. srvctl 명령어를 사용하여 대기 데이터베이스를 시작합니다.

    srvctl start database -db DBDG_SITE2
    

다음 단계

다음으로 Data Guard 브로커를 구성하고 사용 설정합니다.