Oracle Data Guard 구성

이 플레이북에서는 Oracle Data Guard 환경을 구성하는 데 유용한 스크립트를 제공합니다. 이 스크립트는 restore from service 기능 및 Oracle Data Guard Broker를 사용하여 기존 기본 데이터베이스에 대한 대기 데이터베이스를 설정합니다.

dg-setup-scriptsDG_properties.ini 파일을 사용하여 기본 및 대기 환경을 정의합니다.

이 스크립트는 2개의 tar 파일, 기본 암호 파일의 tar 및 기본 TDE(Transparent Data Encryption) 전자 지갑(wallet)의 tar를 생성하여 대기 데이터베이스 노드에 복사합니다.

스크립트는 net.core.rmem_max, net.core.wmem_max 또는 MTU(최대 전송 단위)와 같은 운영 체제를 변경하지 않습니다. 최적의 리두 전송을 위해 net.core.rmem_maxnet.core.wmem_max를 조정하는 것이 좋습니다.

다음 작업은 스크립트를 실행하여 데이터베이스에 대해 Oracle Data Guard를 구성하는 방법에 대해 설명합니다.

Oracle Data Guard에 대한 환경 변수 정의

DG_properties.ini 파일을 사용하여 Oracle Data Guard 구성에 대한 기본 시스템을 준비합니다. 스크립트는 DG_properties.ini의 매개변수를 사용하여 기본 및 대기 시스템을 구성합니다. 이 파일에는 스크립트에 필요한 모든 입력 매개변수가 포함됩니다. 더 알아보기에서 DG_properties.ini 파일의 예를 참조하십시오.

샘플 DG_properties.ini 파일은 dg-setup-scripts zip 파일에서 사용할 수 있습니다. 사용자 환경의 값으로 파일을 사용자 정의할 수 있습니다.

  1. dg-setup-scripts zip 파일을 다운로드하고 내용을 추출합니다.
  2. Linux 운영 체제에서 샘플 DG_properties.ini 등록 정보 파일을 편집하여 사용자 환경의 특정 값으로 파일을 사용자 정의합니다.
    Linux에서 편집하면 행 끝에 Windows CRLF를 가져오는 것과 같은 인코딩 관련 문제가 발생하지 않습니다.
  3. 시스템이 Oracle RAC(Oracle Real Application Clusters)이고 비밀번호 파일이 Oracle ASM(Oracle Automatic Storage Management)에 있는 경우 익스포트 매개변수를 정의하도록 [일반 속성] 섹션을 편집합니다.
    ########################################################################################################
    # GENERAL PROPERTIES
    ########################################################################################################
    export ORACLE_OSUSER=oracle
    export ORACLE_OSGROUP=oinstall
    export GRID_OSUSER=grid
    export GRID_HOME=/u01/app/19.0.0.0/grid
    export ORACLE_HOME=/u01/app/oracle/product/18.0.0.0/dbhome_1
    export ORACLE_BASE=/u01/app/oracle
    
    export DB_NAME=DBTEST4	    # The database name (the value of db parameter db_name)
    export SYS_USERNAME=sys
    
    export RAC=NO	             # Set to YES (if DB is a RAC) or to NO (if single instance DB)
    export PASSWORD_FILE_IN_ASM=YES  # Set to YES when the password file is placed in ASM (in case of RAC, it will always be placed in ASM).
    export ADDITIONAL_STANDBY=NO     # Set to YES only if the primary db has another standby database already configured, and you are using the scripts to add a second standby.
  4. 기본 환경 등록 정보 섹션을 편집하고 매개변수를 변경하여 기본 시스템 환경을 정의합니다.
    #########################################################################################################
    # PRIMARY ENV PROPERTIES
    #########################################################################################################
    export A_PORT=1521					# The primary listener's port (scan's listener port if RAC)
    export A_SERVICE=ORCL_PRI.primarydomainexample.com	# The default CDB service name in primary (format is <db_unique_name>.<primary_domain>) 
    export A_DBNM=ORCL_PRI					# The DB UNIQUE NAME of primary DB
    
    # For single instance (will be ignored if RAC=YES)
    	export A_DB_IP=10.10.10.10			# Provide the primary listener's IP. This needs to be reachable from the standby DB.
    
    # For RAC (will be ignored if RAC=NO)
    	# Specify the PRIMARY RAC's scan IPs and scan address name
    	export A_SCAN_IP1=10.10.10.1
    	export A_SCAN_IP2=10.10.10.2
    	export A_SCAN_IP3=10.10.10.3
    	export A_SCAN_ADDRESS=primary-scan.primarydomainexample.com
    	# Provide the ORACLE_SID of the primary RAC instances
    	export A_SID1=ORCL1
    	export A_SID2=ORCL2
    
    export A_FILE_DEST="+DATA"              # the value of db_create_file_dest db parameter in primary DB
    export A_ONLINE_LOG_DEST1="+RECO"       # the value of db_create_online_log_dest_1 parameter in primary DB
    export A_RECOVERY_FILE_DEST="+RECO"     # the value of db_recovery_file_dest parameter in primary DB
    
    # Other properties required by primary setup script
    export TDE_LOC=/opt/oracle/dcs/commonstore/wallets/tde/${A_DBNM}	# The the TDE wallet folder in primary (where the .p12 file is located). Leave it EMPTY if TDE is not used.
    export CREATE_PASSWORD_FILE=YES                                         # If password file already exists in primary and you do not want to override it, set this to NO.
    export OUTPUT_WALLET_TAR=/tmp/PRIMARY_TDE_WALLET.GZ         		# Absolute file name for the output tar file that will be generated in primary, containing the primary TDE wallet.
    export OUTPUT_PASWORD_TAR=/tmp/PRIMARY_PASSWORD_FILE.GZ        		# Absolute file name for the output tar file that will be generated in primary, containing the primary password file.
    
  5. Standby Env Properties 섹션을 편집하고 파라미터를 변경하여 대기 시스템 환경을 정의합니다.
    ########################################################################################################
    # STANDBY ENV PROPERTIES
    ########################################################################################################
    export B_PORT=1521							# The standby listener's port (scan's listener port if RAC)
    export B_SERVICE=ORCL_STBY.standbydomainexample.com			# The default CDB service name in standby (format is <db_unique_name>.<secondary_domain>)
    export B_DBNM=ORCL_STBY							# The DB UNIQUE NAME of standby DB
    
    # For single instance (will be ignored if RAC=YES)
    	export B_DB_IP=10.20.20.20	# Provide the primary listener's IP. This needs to be reachable from the standby DB
    
    # For RAC (will be ignored if RAC=NO) 
    	# Specify STANDBY RAC's scan IPs and scan address name
    	export B_SCAN_IP1=10.20.20.1
    	export B_SCAN_IP2=10.20.20.2
    	export B_SCAN_IP3=10.20.20.3
    	export B_SCAN_ADDRESS=standby-scan.standbydomainexample.com
    	# Standby node's VIPs (provide the IPS, not the names)
    	export B_VIP1=10.20.20.10
    	export B_VIP2=10.20.20.20
    	# Provide the ORACLE_SID of the standby RAC instances
    	export B_SID1=ORCL1
    	export B_SID2=ORCL2
    	# (normally only needed in Exadata) Provide interconnect IPs if they must be specified in the parameter cluster_interconnects. Leave them empty if cluster_interconnects is empty.
            export B_INTERCONNECT_IP1=
            export B_INTERCONNECT_IP2=
    
    
    export B_FILE_DEST="+DATA"              # the value of db_create_file_dest db parameter in standby DB
    export B_ONLINE_LOG_DEST1="+RECO"       # the value of db_create_online_log_dest_1 parameter in standby DB
    export B_RECOVERY_FILE_DEST="+RECO"     # the value of db_recovery_file_dest parameter in standby DB
    
    # Other properties required by the standby setup script
    export INPUT_WALLET_TAR=/tmp/PRIMARY_TDE_WALLET.GZ		   # Absolute file name for the input tar file that contains the primary TDE wallet.
    export INPUT_PASWORD_TAR=/tmp/PRIMARY_PASSWORD_FILE.GZ	      # Absolute file name for the input tar file that contains the primary password file.
    export B_TDE_LOC=/opt/oracle/dcs/commonstore/wallets/$B_DBNM/tde   # Absolute  path where the wallet files (.p12) will be created in standby hosts. 
    # Verify which is the value used by your system, it may differ. Leave it empty if TDE is not used.

스크립트 업로드

다음과 같이 기본 및 보조 데이터베이스 호스트에 스크립트를 업로드합니다.

  1. 다음 스크립트 및 파일을 primary 데이터베이스 호스트로 업로드합니다.
    • 1_prepare_primary_maa_parameters.sh: 데이터베이스 호스트 1(단일 인스턴스 또는 Oracle RAC)로 업로드합니다.
    • 2_dataguardit_primary.sh: 모든 데이터베이스 노드에 업로드합니다.
    • create_pw_tar_from_asm_root.sh: 모든 데이터베이스 노드에 업로드합니다.
    • DG_properties.ini: 모든 데이터베이스 노드에 업로드합니다.
  2. 기본 데이터베이스 호스트의 경우 모든 노드에서 oracle OS 사용자에게 스크립트에 대한 실행 권한을 부여합니다.
  3. 다음 파일을 새 보조 데이터베이스 호스트로 업로드합니다.
    • 3_dataguardit_standby_root.sh: 모든 데이터베이스 노드에 업로드합니다.
    • DG_properties.ini: 모든 데이터베이스 노드에 업로드합니다.
  4. 보조 데이터베이스 호스트의 경우 스크립트에 대한 실행 권한을 root OS 사용자에게 부여합니다.

기본 데이터베이스에 대한 Oracle Data Guard 매개변수 준비

Oracle Data Guard를 구성하기 전에 기본 데이터베이스에서 MAA(Oracle Maximum Availability Architecture) 권장 Oracle Data Guard 매개변수를 설정합니다. 1_prepare_primary_maa_parameters.sh 스크립트는 Oracle Data Guard에 대해 권장되는 MAA 매개변수를 구성하고 대기 로그 파일을 만듭니다.

MAA는 Oracle Database에 아키텍처, 구성 및 라이프사이클 모범사례를 제공하여 온프레미스, 클라우드 또는 하이브리드 구성에 상주하는 데이터베이스에 고가용성 서비스 레벨을 구현합니다.

이 스크립트는 다음 MAA 권장 매개변수 값을 설정합니다.
  • 내보내기 DB_FLASHBACK_RETENTION_TARGET=1440
  • 익스포트 DB_BLOCK_CHECKSUM=전체
  • 익스포트 DB_BLOCK_CHECKING=전체
  • 내보내기 DB_LOST_WRITE_PROTECT=TYPICAL
  • 수출 LOG_BUFFER=256M
  • export STANDBY_FILE_MANAGEMENT=자동

주:

MAA 모범 사례에 따라 primary database에서 DB_BLOCK_CHECKING 파라미터를 MEDIUM 또는 FULL로 설정해야 합니다. 스크립트는 이 값을 FULL로 설정합니다. 기본 데이터베이스에서 DB_BLOCK_CHECKINGMEDIUM 또는 FULL로 설정하는 성능 오버헤드를 사용할 수 없는 경우 대기 데이터베이스에 대해서만 DB_BLOCK_CHECKINGMEDIUM 또는 FULL로 설정하십시오.

Oracle Data Guard를 구성하기 전에 스크립트를 실행하여 매개변수를 설정합니다. 이 스크립트는 기본 데이터베이스가 Oracle Real Application Clusters(Oracle RAC) 또는 단일 인스턴스 데이터베이스인지 여부에 관계없이 한 번만 실행합니다.

  1. primary database 노드에 oracle 유저로 로그인합니다.
  2. 기본 데이터베이스 호스트에서 단일 인스턴스 데이터베이스에 대해 1_prepare_primary_maa_parameters.sh 스크립트를 실행하거나 Oracle Real Application Clusters(Oracle RAC)에 대해 Node1 스크립트를 실행합니다.
    이 스크립트는 sys 사용자의 암호를 묻는 메시지를 표시합니다.

MAA 매개변수가 설정된 후 스크립트는 ONLINE_LOG_DEST1 디렉토리에 대기 로그를 생성합니다. 대기 로그의 크기는 온라인 로그(REDOLOG_SIZE)와 동일합니다. 온라인 로그보다 그룹이 하나 더 있지만 스레드 수는 동일합니다.

Oracle Data Guard용 기본 시스템 준비

Oracle Data Guard 구성을 위해 기본 호스트를 준비하고 나중에 대기 데이터베이스 호스트에서 필요한 출력 파일을 만듭니다.

2_dataguardit_primary.sh 스크립트는 다음 출력 파일을 만듭니다.
  • 암호 파일을 포함하는 TAR 파일
  • TDE 전자 지갑(TDE 암호화가 사용되는 경우에만)을 포함하는 TAR 파일입니다.
  1. primary database 노드에 oracle 유저로 로그인합니다.
  2. DG_properties.ini 파일이 2_dataguardit_primary.sh 스크립트와 동일한 폴더에 있고 환경 값으로 올바르게 사용자 정의되었는지 확인합니다.
  3. 기본 DB Node1에서 2_dataguardit_primary.sh 스크립트를 실행합니다.

    이 스크립트는 sys 사용자의 암호를 묻는 메시지를 표시합니다.

    암호 파일이 ASM에 저장되면 스크립트는 사용자에게 create_pw_tar_from_asm_root.sh 스크립트를 실행하도록 요청합니다.

    이 스크립트는 암호 파일에 대한 tar 파일과 Transparent Data Encryption (TDE) 전자 지갑(TDE가 사용되는 경우)에 대한 tar 파일을 생성합니다.
  4. 기본 데이터베이스가 Oracle RAC(Oracle Real Application Clusters) 데이터베이스인 경우 Node2에서 스크립트를 실행합니다.
  5. (권장) net.core.rmem_max, net.core.wmem_max에 대한 운영 체제 매개변수를 설정하여 redo transport를 최적화합니다.
    Oracle RAC인 경우 두 노드에서 최적화합니다.
    MAA 권장 사항에 대한 링크는 Discover More를 참조하십시오.
  6. (권장) MTU(최대 전송 단위)를 설정하여 redo transport를 최적화합니다.
    Oracle RAC인 경우 두 노드에서 최적화합니다.
    MAA 권장 사항에 대한 링크는 Discover More를 참조하십시오.

출력 파일 복사

기본 데이터베이스 노드에서 생성된 출력 tar 파일을 복사하여 보조 데이터베이스 호스트에 업로드합니다. Oracle RAC가 있는 경우 tar 파일은 Node1에 생성됩니다. tar 파일을 보조 호스트의 두 노드에 업로드합니다.

DG_properties.ini 파일에 정의된 속성 INPUT_PASWORD_TARINPUT_WALLET_TAR(TDE가 사용되는 경우)로 표시된 위치에 tar 파일을 배치해야 합니다.

Oracle Data Guard용 보조 시스템 준비

새 보조(대기) 호스트를 준비하고, 대기 데이터베이스를 생성하고, 보조 데이터베이스 노드에서 Oracle Data Guard 중계자를 구성합니다.

3_dataguardit_standby_root.sh 스크립트는 기존 데이터베이스를 삭제하고 필요한 아티팩트(TNS 별칭, NET 암호화, 암호 파일 및 TDE(Transparent Data Encryption) 전자 지갑(wallet)을 구성하여 새 대기 데이터베이스 호스트를 준비합니다. 그런 다음 Oracle Recovery Manager(RMAN) restore from service 기능을 사용하여 대기 데이터베이스를 생성 및 구성하고 Oracle Data Guard 중계자를 구성합니다.

3_dataguardit_standby_root.sh 스크립트는 DG_properties.ini 파일에서 정의한 환경 변수를 사용합니다. 보조 데이터베이스가 Oracle RAC 데이터베이스인 경우 두 노드에서 스크립트를 실행합니다. 대부분의 작업은 스크립트가 Node1에서 실행되고 단계의 하위 집합이 Node2에서 실행될 때 수행됩니다. 스크립트가 Node1에서 완료되기 전에 Node2에서 스크립트를 실행하지 마십시오.

  1. 보조 데이터베이스 노드에 root 사용자로 로그인합니다.
    Oracle RAC의 경우 Node1에 로그인합니다.
  2. 스크립트를 업로드한 디렉토리에서 3_dataguardit_standby_root.sh 스크립트를 찾습니다.
  3. DG_properties.ini 파일이 3_dataguardit_standby_root.sh 스크립트와 동일한 폴더에 있고 스크립트의 사용자 정의가 올바른지 확인합니다.
  4. 3_dataguardit_standby_root.sh 스크립트를 실행합니다.
    이 스크립트는 sys 사용자의 암호를 묻는 메시지를 표시합니다.
  5. Oracle RAC가 있는 경우 root로 Node2에 로그인하고 Node1에서 스크립트가 완료되면 노드 2에서 3_dataguardit_standby_root.sh 스크립트를 실행합니다.
  6. (권장) net.core.rmem_max, net.core.wmem_max에 대한 운영 체제 매개변수를 설정하여 redo transport를 최적화합니다.
    Oracle RAC인 경우 두 노드에서 최적화합니다.
    MAA(Oracle Maximum Availability Architecture) 권장 사항에 대한 링크는 More 탐색을 참조하십시오.
  7. (권장) MTU(최대 전송 단위)를 설정하여 redo transport를 최적화합니다.
    Oracle RAC인 경우 두 노드에서 최적화합니다.
    MAA 권장 사항에 대한 링크는 Discover More를 참조하십시오.

새 대기 데이터베이스에 대한 TNS 항목 추가

기존 Oracle Data Guard 인스턴스(ADDITIONAL_STANDBY=YES)에 새 대기 데이터베이스를 추가한 경우 이전 기존 대기 데이터베이스를 가리키는 TNS 항목을 새 대기 데이터베이스 tnsnames.ora 파일에 추가합니다. standby database가 리스너 포트에 서로 연결할 수 있는지 확인합니다.