Configurer Oracle Data Guard

Ce livre de jeu fournit des scripts pour vous aider à configurer votre environnement Oracle Data Guard. Ces scripts configurent une base de données de secours pour une base de données principale existante à l'aide de la fonction restore from service et d'Oracle Data Guard Broker.

dg-setup-scripts utilise un fichier DG_properties.ini pour définir les environnements principal et de secours.

Les scripts créent 2 fichiers tar, un fichier tar du fichier de mots de passe principal et un fichier tar du portefeuille Chiffrement transparent des données (TDE) principal, que vous copierez vers le noeud de la base de données de secours.

Les scripts n'apportent aucune modification au système d'exploitation, par exemple net.core.rmem_max et net.core.wmem_max, ni à l'unité de transmission maximale (MTU). Il est recommandé d'ajuster net.core.rmem_max et net.core.wmem_max pour un transport optimal des données de journalisation.

Les tâches suivantes décrivent comment exécuter les scripts pour configurer Oracle Data Guard pour votre base de données.

Définir les variables d'environnement pour Oracle Data Guard

Utilisez un fichier DG_properties.ini pour préparer le système principal à une configuration Oracle Data Guard. Les scripts utilisent les paramètres dans DG_properties.ini pour configurer les systèmes principal et de secours. Le fichier contient tous les paramètres d'entrée requis par les scripts. Voir des exemples de fichiers DG_properties.ini dans Explorer plus.

Un exemple de fichier DG_properties.ini est disponible dans le fichier zip dg-setup-scripts. Vous pouvez personnaliser le fichier avec les valeurs de votre environnement.

  1. Téléchargez le fichier zip dg-setup-scripts et extrayez le contenu.
  2. Modifiez l'exemple de fichier de propriétés DG_properties.ini dans un système d'exploitation Linux pour personnaliser le fichier en fonction des valeurs propres à votre environnement.
    L'édition sous Linux évite les problèmes liés à l'encodage, tels que l'obtention de Windows CRLF à la fin des lignes.
  3. Modifiez la section Propriétés générales pour définir les paramètres d'exportation, si le système est un Oracle Real Application Clusters (Oracle RAC) et si le fichier de mots de passe se trouve dans 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. Modifiez la section Propriétés de l'environnement principal et modifiez les paramètres pour définir votre environnement de système 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. Modifiez la section Propriétés de l'environnement de secours et modifiez les paramètres pour définir votre environnement de système de secours.
    ########################################################################################################
    # 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.

Charger les scripts

Chargez les scripts sur les hôtes de base de données principale et secondaire comme suit :

  1. Chargez les scripts et fichiers suivants sur l'hôte ou les hôtes de base de données principaux :
    • 1_prepare_primary_maa_parameters.sh : Charger vers l'hôte de base de données 1 (pour une seule instance ou Oracle RAC).
    • 2_dataguardit_primary.sh : Charger vers tous les noeuds de base de données.
    • create_pw_tar_from_asm_root.sh : Charger vers tous les noeuds de base de données.
    • DG_properties.ini : Charger vers tous les noeuds de base de données.
  2. Pour l'hôte ou les hôtes de la base de données principale, accordez des autorisations d'exécution sur les scripts à l'utilisateur du système d'exploitation oracle sur tous les noeuds.
  3. Chargez les fichiers suivants sur le ou les nouveaux hôtes de base de données secondaires :
    • 3_dataguardit_standby_root.sh : Charger vers tous les noeuds de base de données.
    • DG_properties.ini : Charger vers tous les noeuds de base de données.
  4. Pour le ou les hôtes de base de données secondaires, accordez des autorisations d'exécution sur les scripts à l'utilisateur du système d'exploitation root.

Préparer les paramètres Oracle Data Guard pour la base de données principale

Définissez les paramètres Oracle Data Guard recommandés pour Oracle Maximum Availability Architecture (MAA) sur la base de données principale avant de configurer Oracle Data Guard. Le script 1_prepare_primary_maa_parameters.sh configure les paramètres MAA recommandés pour Oracle Data Guard et crée les fichiers journaux de secours.

MAA fournit les meilleures pratiques d'architecture, de configuration et de cycle de vie pour les bases de données Oracle, ce qui permet des niveaux de service à haute disponibilité pour les bases de données résidant dans des configurations sur place, en nuage ou hybrides.

Le script définit les valeurs de paramètre recommandées MAA suivantes :
  • exporter DB_FLASHBACK_RETENTION_TARGET=1440
  • exportation DB_BLOCK_CHECKSUM=FULL
  • exportation DB_BLOCK_CHECKING=FULL
  • exporter DB_LOST_WRITE_PROTECT=TYPICAL
  • exporter LOG_BUFFER=256M
  • exportation STANDBY_FILE_MANAGEMENT=AUTO

Note :

Selon les meilleures pratiques MAA, le paramètre DB_BLOCK_CHECKING doit être réglé à MEDIUM ou FULL dans la base de données principale. Le script le règle à FULL. Si la surcharge de performance liée à l'activation de DB_BLOCK_CHECKING sur MEDIUM ou FULL n'est pas acceptable pour votre base de données principale, réglez DB_BLOCK_CHECKING à MEDIUM ou FULL pour votre base de données de secours uniquement.

Exécutez le script pour définir les paramètres avant de configurer Oracle Data Guard. Exécutez ce script une seule fois, que la base principale soit Oracle Real Application Clusters (Oracle RAC) ou une base de données à instance unique.

  1. Connectez-vous au noeud de base de données principal en tant qu'utilisateur oracle.
  2. Exécutez le script 1_prepare_primary_maa_parameters.sh dans l'hôte de la base de données principale pour la base de données à instance unique ou Node1 pour Oracle Real Application Clusters (Oracle RAC).
    Le script invite à entrer le mot de passe de l'utilisateur sys.

Une fois les paramètres MAA définis, le script crée des journaux de secours dans le répertoire ONLINE_LOG_DEST1. Les journaux de secours ont la même taille que les journaux en ligne (REDOLOG_SIZE). Ils ont un groupe de plus que les journaux en ligne, mais le même nombre de threads.

Préparer le système principal pour Oracle Data Guard

Préparez les hôtes principaux pour une configuration Oracle Data Guard et créez les fichiers de sortie nécessaires ultérieurement dans les hôtes de la base de données de secours.

Le script 2_dataguardit_primary.sh crée les fichiers de sortie suivants :
  • Fichier TAR contenant le fichier de mots de passe
  • Fichier TAR contenant le portefeuille TDE (uniquement si le chiffrement TDE est utilisé).
  1. Connectez-vous au noeud de base de données principal en tant qu'utilisateur oracle.
  2. Vérifiez que le fichier DG_properties.ini se trouve dans le même dossier que le script 2_dataguardit_primary.sh et qu'il a été correctement personnalisé avec les valeurs de l'environnement.
  3. Exécutez le script 2_dataguardit_primary.sh dans la base de données principale Node1.

    Le script invite à entrer le mot de passe de l'utilisateur sys.

    Lorsque le fichier de mots de passe est stocké dans ASM, le script demande à l'utilisateur d'exécuter le script create_pw_tar_from_asm_root.sh.

    Le script crée un fichier tar pour le fichier de mots de passe et un fichier tar pour le portefeuille Chiffrement transparent des données (TDE) (si TDE est utilisé).
  4. Si la base principale est une base de données Oracle Real Application Clusters (Oracle RAC), exécutez le script dans Node2.
  5. (Recommandé) Définissez les paramètres du système d'exploitation pour net.core.rmem_max, net.core.wmem_max afin d'optimiser redo transport.
    Si Oracle RAC, optimisez-les dans les deux noeuds.
    Voir Explorer davantage pour un lien vers les recommandations de l'AAM.
  6. (Recommandé) Définissez l'unité de transmission maximale (MTU) pour optimiser redo transport.
    Si Oracle RAC, optimisez-les dans les deux noeuds.
    Voir Explorer davantage pour un lien vers les recommandations de l'AAM.

Copier les fichiers de sortie

Copiez les fichiers tar de sortie générés à partir du noeud de base de données principal et chargez-les vers les hôtes de base de données secondaires. Si vous disposez d'un Oracle RAC, les fichiers tar sont créés dans Node1. Chargez les fichiers tar sur les deux noeuds des hôtes secondaires.

Assurez-vous de placer les fichiers tar dans les emplacements indiqués par les propriétés INPUT_PASWORD_TAR et INPUT_WALLET_TAR (lorsque TDE est utilisé) qui sont définis dans le fichier DG_properties.ini.

Préparer le système secondaire pour Oracle Data Guard

Préparez le nouvel hôte secondaire (de secours), créez la base de données de secours et configurez le courtier Oracle Data Guard dans le noeud de base de données secondaire.

Le script 3_dataguardit_standby_root.sh prépare les nouveaux hôtes de base de données de secours en supprimant la base de données existante et en configurant les artefacts requis (alias TNS, chiffrement NET, fichier de mots de passe et portefeuille Chiffrement transparent des données (TDE)). Il crée et configure ensuite la base de données de secours à l'aide de la fonction restore from service d'Oracle Recovery Manager (RMAN) et configure le courtier Oracle Data Guard.

Le script 3_dataguardit_standby_root.sh utilise les variables d'environnement que vous avez définies dans le fichier DG_properties.ini. Si la base secondaire est une base de données Oracle RAC, exécutez le script dans les deux noeuds. La plupart des actions sont exécutées lorsque le script s'exécute dans Node1 et un sous-ensemble des étapes est effectué lors de son exécution dans Node2. N'exécutez pas le script dans Node2 avant la fin du script dans Node1.

  1. Connectez-vous au noeud de base de données secondaire en tant qu'utilisateur root.
    Pour Oracle RAC, connectez-vous à Node1.
  2. Localisez le script 3_dataguardit_standby_root.sh dans le répertoire où vous avez chargé le script.
  3. Vérifiez que le fichier DG_properties.ini se trouve dans le même dossier que le script 3_dataguardit_standby_root.sh et que la personnalisation dans le script est correcte.
  4. Exécutez le script 3_dataguardit_standby_root.sh.
    Le script invite à entrer le mot de passe de l'utilisateur sys.
  5. Si vous disposez d'un Oracle RAC, connectez-vous à Node2 en tant qu'utilisateur root et exécutez le script 3_dataguardit_standby_root.sh dans le noeud 2 une fois le script terminé dans Node1.
  6. (Recommandé) Définissez les paramètres du système d'exploitation pour net.core.rmem_max, net.core.wmem_max afin d'optimiser redo transport.
    Si Oracle RAC, optimisez-les dans les deux noeuds.
    Voir Explorer davantage pour obtenir un lien vers les recommandations MAA (Oracle Maximum Availability Architecture).
  7. (Recommandé) Définissez l'unité de transmission maximale (MTU) pour optimiser redo transport.
    Si Oracle RAC, optimisez-les dans les deux noeuds.
    Voir Explorer davantage pour obtenir un lien vers les recommandations de MAA.

Ajouter une entrée TNS pour une nouvelle base de données de secours

Si vous avez ajouté une nouvelle base de données de secours à une instance Oracle Data Guard existante (ADDITIONAL_STANDBY=YES), ajoutez l'entrée TNS qui pointe vers la base de données de secours existante, dans le nouveau fichier tnsnames.ora de la base de données de secours, et inversement. Assurez-vous que les bases de données de secours peuvent se connecter les unes aux autres au port du module d'écoute.