Configurer Oracle Data Guard

Ce livre de jeux 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 fonctionnalité restore from service et du broker Oracle Data Guard.

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 Transparent Data Encryption (TDE) principal que vous copiez vers le noeud de base de données de secours.

Les scripts ne modifient pas le système d'exploitation, par exemple net.core.rmem_max et net.core.wmem_max, ou l'unité de transmission maximale (MTU). Il est recommandé d'ajuster les paramètres net.core.rmem_max et net.core.wmem_max pour un transport optimal des informations 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éfinition des variables d'environnement pour Oracle Data Guard

Utilisez un fichier DG_properties.ini pour préparer le système principal pour 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. Reportez-vous aux 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 avec les valeurs spécifiques de votre environnement.
    La modification sous Linux évite les problèmes liés au codage, 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'export, 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 Primary Env Properties et modifiez les paramètres pour définir votre environnement 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 Standby Env Properties et modifiez les paramètres pour définir votre environnement 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.

Téléchargement des scripts

Téléchargez les scripts vers les hôtes de base de données principal et secondaire comme suit :

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

Préparation des paramètres Oracle Data Guard pour la base de données principale

Définissez les paramètres Oracle Data Guard recommandés dans 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 en matière d'architecture, de configuration et de cycle de vie pour les bases de données Oracle, permettant ainsi des niveaux de service haute disponibilité pour les bases de données résidant dans des configurations sur site, cloud ou hybrides.

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

Remarque :

Selon les meilleures pratiques MAA, le paramètre DB_BLOCK_CHECKING doit être défini sur MEDIUM ou FULL dans la base de données principale. Le script le définit sur FULL. Si la surcharge de performances liée à l'activation de DB_BLOCK_CHECKING sur MEDIUM ou FULL est inacceptable sur la base de données principale, définissez DB_BLOCK_CHECKING sur MEDIUM ou FULL pour la 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, qu'il s'agisse d'une base de données à instance unique ou d'une base de données Oracle Real Application Clusters (Oracle RAC).

  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 base de données principal pour la base de données à instance unique ou Node1 pour Oracle Real Application Clusters (Oracle RAC).
    Le script vous invite à saisir 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éparation du 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 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 cryptage 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 d'environnement.
  3. Exécutez le script 2_dataguardit_primary.sh dans la base de données principale Node1.

    Le script vous invite à saisir 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 Transparent Data Encryption (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-le dans les deux noeuds.
    Voir Explorer plus pour un lien vers les recommandations MAA.
  6. (Recommandé) Définissez l'unité de transmission maximale (MTU) pour optimiser redo transport.
    Si Oracle RAC, optimisez-le dans les deux noeuds.
    Voir Explorer plus pour un lien vers les recommandations MAA.

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 téléchargez-les vers les hôtes de base de données secondaires. Si vous disposez d'une instance Oracle RAC, les fichiers tar sont créés dans Node1. Téléchargez les fichiers tar vers les deux noeuds des hôtes secondaires.

Veillez à placer les fichiers tar aux emplacements indiqués par les propriétés INPUT_PASWORD_TAR et INPUT_WALLET_TAR (lorsque TDE est utilisé) définies dans le fichier DG_properties.ini.

Préparation du 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 broker 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, cryptage NET, fichier de mots de passe et portefeuille Transparent Data Encryption (TDE)). Il crée et configure ensuite la base de données de secours à l'aide de la fonctionnalité Oracle Recovery Manager (RMAN) restore from service et configure le broker 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 le 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 lors de l'exécution du script dans Node1 et un sous-ensemble des étapes est effectué lorsqu'il s'exécute 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 dans lequel vous avez télé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 vous invite à saisir le mot de passe de l'utilisateur sys.
  5. Si vous disposez d'une instance Oracle RAC, connectez-vous à Node2 en tant que 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-le dans les deux noeuds.
    Pour obtenir un lien vers les recommandations Oracle Maximum Availability Architecture (MAA), reportez-vous à la section Explorer plus.
  7. (Recommandé) Définissez l'unité de transmission maximale (MTU) pour optimiser redo transport.
    Si Oracle RAC, optimisez-le dans les deux noeuds.
    Voir Explorer plus pour un lien vers les recommandations 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 précédente, 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 mutuellement au port du processus d'écoute.