Configuración de Oracle Data Guard

Este cuaderno de estrategias proporciona scripts para ayudarle a configurar el entorno de Oracle Data Guard. Estos scripts configuran una base de datos en espera para una base de datos primaria existente mediante la función restore from service y el agente de Oracle Data Guard.

dg-setup-scripts utiliza un archivo DG_properties.ini para definir los entornos principal y en espera.

Los scripts crean 2 archivos tar, un tar del archivo de contraseña principal y un tar de la cartera principal de cifrado de datos transparente (TDE), que se copiará en el nodo de base de datos en espera.

Las secuencias de comandos no realizan cambios en el sistema operativo, como net.core.rmem_max y net.core.wmem_max, ni en la unidad de transmisión máxima (MTU). Se recomienda ajustar net.core.rmem_max y net.core.wmem_max para un transporte de redo óptimo.

Las siguientes tareas describen cómo ejecutar los scripts para configurar Oracle Data Guard para la base de datos.

Definición de variables de entorno para Oracle Data Guard

Utilice un archivo DG_properties.ini para preparar el sistema principal para una configuración de Oracle Data Guard. Las secuencias de comandos utilizan los parámetros de DG_properties.ini para configurar los sistemas principal y en espera. El archivo contiene todos los parámetros de entrada necesarios para las secuencias de comandos. Consulte Ejemplos de archivos DG_properties.ini en Explorar más.

Hay un archivo DG_properties.ini de ejemplo disponible en el archivo zip dg-setup-scripts. Puede personalizar el archivo con los valores de su entorno.

  1. Descargue el archivo zip dg-setup-scripts y extraiga el contenido.
  2. Edite el archivo de propiedades DG_properties.ini de ejemplo en un sistema operativo Linux para personalizar el archivo con los valores específicos del entorno.
    La edición en Linux evita problemas relacionados con la codificación, como obtener CRLF de Windows al final de las líneas.
  3. Edite la sección Propiedades Generales para definir los parámetros de exportación, si el sistema es Oracle Real Application Clusters (Oracle RAC) y si el archivo de contraseñas está en Oracle Automatic Storage Management (Oracle ASM).
    ########################################################################################################
    # 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. Edite la sección Primary Env Properties y cambie los parámetros para definir el entorno del sistema principal.
    #########################################################################################################
    # 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. Edite la sección Standby Env Properties y cambie los parámetros para definir el entorno del sistema en espera.
    ########################################################################################################
    # 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.

Carga de los scripts

Cargue los scripts en los hosts de base de datos primaria y secundaria de la siguiente forma:

  1. Cargue los siguientes archivos y secuencias de comandos en los hosts o hosts de la base de datos primary:
    • 1_prepare_primary_maa_parameters.sh: carga en el host de base de datos 1 (para una instancia única u Oracle RAC).
    • 2_dataguardit_primary.sh: cargar en todos los nodos de base de datos.
    • create_pw_tar_from_asm_root.sh: cargar en todos los nodos de base de datos.
    • DG_properties.ini: cargar en todos los nodos de base de datos.
  2. Para los hosts o hosts de base de datos primaria, otorgue permisos de ejecución en los scripts al usuario del sistema operativo oracle en todos los nodos.
  3. Cargue los siguientes archivos en el host o hosts de la base de datos nueva secundaria:
    • 3_dataguardit_standby_root.sh: cargar en todos los nodos de base de datos.
    • DG_properties.ini: cargar en todos los nodos de base de datos.
  4. Para los hosts o hosts de base de datos secundarios, otorgue permisos de ejecución en los scripts al usuario del sistema operativo root.

Preparación de los parámetros de Oracle Data Guard para la base de datos principal

Defina los parámetros recomendados de Oracle Data Guard de Oracle Maximum Availability Architecture (MAA) en la base de datos primaria antes de configurar Oracle Data Guard. El script 1_prepare_primary_maa_parameters.sh configura los parámetros de MAA recomendados para Oracle Data Guard y crea los archivos log en espera.

MAA proporciona mejores prácticas de arquitectura, configuración y ciclo de vida para bases de datos Oracle, lo que permite niveles de servicio de alta disponibilidad para bases de datos que residen en configuraciones locales, en la nube o híbridas.

La secuencia de comandos define los siguientes valores de parámetros recomendados de MAA:
  • exportar DB_FLASHBACK_RETENTION_TARGET=1440
  • export DB_BLOCK_CHECKSUM=FULL
  • export DB_BLOCK_CHECKING=FULL
  • export DB_LOST_WRITE_PROTECT=TYPICAL
  • exportar LOG_BUFFER=256M
  • export STANDBY_FILE_MANAGEMENT=AUTO

Nota:

Según las mejores prácticas de MAA, el parámetro DB_BLOCK_CHECKING se debe definir en MEDIUM o FULL en la base de datos primaria. El script lo define en FULL. Si la sobrecarga de rendimiento de la activación de DB_BLOCK_CHECKING en MEDIUM o FULL no es aceptable en la base de datos primaria, defina DB_BLOCK_CHECKING en MEDIUM o FULL solo para la base de datos en espera.

Ejecute el script para definir los parámetros antes de configurar Oracle Data Guard. Ejecute este script sólo una vez, si la base de datos principal es Oracle Real Application Clusters (Oracle RAC) o una base de datos de instancia única.

  1. Conéctese al nodo de base de datos principal como usuario oracle.
  2. Ejecute el script 1_prepare_primary_maa_parameters.sh en el host de base de datos principal para la base de datos de instancia única o Node1 para Oracle Real Application Clusters (Oracle RAC).
    El script solicitará la contraseña del usuario sys.

Después de definir los parámetros de MAA, la secuencia de comandos crea logs en espera en el directorio ONLINE_LOG_DEST1. Los logs en espera tienen el mismo tamaño que los logs en línea (REDOLOG_SIZE). Tienen un grupo más que los logs en línea, pero el mismo número de threads.

Preparación del sistema principal para Oracle Data Guard

Prepare los hosts principales para una configuración de Oracle Data Guard y cree los archivos de salida que se necesitan más adelante en los hosts de base de datos en espera.

La secuencia de comandos 2_dataguardit_primary.sh crea los siguientes archivos de salida:
  • Archivo TAR que contiene el archivo de contraseñas
  • Archivo TAR que contiene la cartera de TDE (solo si se utiliza el cifrado de TDE).
  1. Conéctese al nodo de base de datos principal como usuario oracle.
  2. Verifique que el archivo DG_properties.ini esté en la misma carpeta que el script 2_dataguardit_primary.sh y que se haya personalizado correctamente con los valores de entorno.
  3. Ejecute el script 2_dataguardit_primary.sh en la base de datos primaria Node1.

    El script solicitará la contraseña del usuario sys.

    Cuando el archivo de contraseñas se almacena en ASM, el script solicitará al usuario que ejecute el script create_pw_tar_from_asm_root.sh.

    El script crea un archivo tar para el archivo de contraseña y un archivo tar para la cartera de cifrado de datos transparente (TDE) (si se utiliza TDE).
  4. Si la base de datos principal es Oracle Real Application Clusters (Oracle RAC), ejecute el script en Node2.
  5. (Recomendado) Defina los parámetros del sistema operativo para net.core.rmem_max, net.core.wmem_max para optimizar redo transport.
    Si Oracle RAC, optimice en ambos nodos.
    Consulte Explorar más para obtener un enlace a las recomendaciones de MAA.
  6. (Recomendado) Defina la unidad de transmisión máxima (MTU) para optimizar redo transport.
    Si Oracle RAC, optimice en ambos nodos.
    Consulte Explorar más para obtener un enlace a las recomendaciones de MAA.

Copia de los Archivos de Salida

Copie los archivos tar de salida generados desde el nodo de base de datos principal y cárguelos en los hosts de base de datos secundaria. Si tiene Oracle RAC, los archivos tar se crean en Node1. Cargue los archivos tar en ambos nodos de los hosts secundarios.

Asegúrese de colocar los archivos tar en las ubicaciones indicadas por las propiedades INPUT_PASWORD_TAR y INPUT_WALLET_TAR (cuando se utiliza TDE) definidas en el archivo DG_properties.ini.

Preparación del sistema secundario para Oracle Data Guard

Prepare el nuevo host secundario (en espera), cree la base de datos en espera y configure Oracle Data Guard Broker en el nodo de base de datos secundario.

La secuencia de comandos 3_dataguardit_standby_root.sh prepara los nuevos hosts de base de datos en espera mediante la supresión de la base de datos existente y la configuración de los artefactos necesarios (alias TNS, cifrado NET, archivo de contraseñas y cartera de cifrado de datos transparente (TDE)). A continuación, crea y configura la base de datos en espera mediante la función Oracle Recovery Manager (RMAN) restore from service y configura el broker de Oracle Data Guard.

La secuencia de comandos 3_dataguardit_standby_root.sh utiliza las variables de entorno definidas en el archivo DG_properties.ini. Si el secundario es una base de datos Oracle RAC, ejecute el script en ambos nodos. La mayoría de las acciones se realizan cuando el script se ejecuta en Node1 y se realiza un subjuego de los pasos cuando se ejecuta en Node2. No ejecute el script en Node2 antes de que el script finalice en Node1.

  1. Conéctese al nodo de base de datos secundario como usuario root.
    Para Oracle RAC, conéctese a Node1.
  2. Busque el script 3_dataguardit_standby_root.sh en el directorio en el que ha cargado el script.
  3. Verifique que el archivo DG_properties.ini esté en la misma carpeta que el script 3_dataguardit_standby_root.sh y que la personalización del script sea correcta.
  4. Ejecute la secuencia de comandos 3_dataguardit_standby_root.sh.
    El script solicitará la contraseña del usuario sys.
  5. Si tiene Oracle RAC, conéctese a Node2 como root y ejecute el script 3_dataguardit_standby_root.sh en el nodo 2 una vez que el script finalice en Node1.
  6. (Recomendado) Defina los parámetros del sistema operativo para net.core.rmem_max, net.core.wmem_max para optimizar redo transport.
    Si Oracle RAC, optimice en ambos nodos.
    Consulte Exploración de más para obtener un enlace a las recomendaciones de Oracle Maximum Availability Architecture (MAA).
  7. (Recomendado) Defina la unidad de transmisión máxima (MTU) para optimizar redo transport.
    Si Oracle RAC, optimice en ambos nodos.
    Consulte Explorar más para obtener un enlace a las recomendaciones de MAA.

Agregar una entrada TNS para una nueva base de datos en espera

Si ha agregado una nueva base de datos en espera a una instancia de Oracle Data Guard existente (ADDITIONAL_STANDBY=YES), agregue la entrada TNS que apunta a la base de datos en espera existente anteriormente, en el nuevo archivo tnsnames.ora de la base de datos en espera y, a la inversa. Asegúrese de que las bases de datos en espera pueden conectarse entre sí al puerto del listener.