Oracle Data Guard konfigurieren

Dieses Playbook enthält Skripte, mit denen Sie Ihre Oracle Data Guard-Umgebung konfigurieren können. Diese Skripte richten eine Standbydatenbank für eine vorhandene Primärdatenbank mit dem Feature restore from service und Oracle Data Guard Broker ein.

Die dg-setup-scripts verwenden eine DG_properties.ini-Datei, um die primäre und die Standbyumgebungen zu definieren.

Die Skripte erstellen 2 TAR-Dateien, eine TAR-Datei der primären Kennwortdatei und eine TAR-Datei des primären Transparenten Datenverschlüsselungs-Wallets, die Sie in den Standby-Datenbankknoten kopieren.

Die Skripte nehmen keine Änderungen am Betriebssystem vor, wie net.core.rmem_max und net.core.wmem_max oder der maximalen Übertragungseinheit (MTU). Es wird empfohlen, net.core.rmem_max und net.core.wmem_max für einen optimalen Redo-Transport anzupassen.

In den folgenden Aufgaben wird beschrieben, wie Sie die Skripte ausführen, um Oracle Data Guard für Ihre Datenbank zu konfigurieren.

Umgebungsvariablen für Oracle Data Guard definieren

Verwenden Sie eine DG_properties.ini-Datei, um das primäre System für eine Oracle Data Guard-Konfiguration vorzubereiten. Die Skripte verwenden die Parameter in DG_properties.ini, um die Primär- und Standbysysteme zu konfigurieren. Die Datei enthält alle Eingabeparameter, die für die Skripte erforderlich sind. Weitere Informationen finden Sie unter Beispiele für DG_properties.ini-Dateien im Abschnitt "Weitere Informationen".

Eine DG_properties.ini-Beispieldatei ist in der ZIP-Datei dg-setup-scripts verfügbar. Sie können die Datei mit den Umgebungswerten anpassen.

  1. Laden Sie die ZIP-Datei dg-setup-scripts herunter, und extrahieren Sie den Inhalt.
  2. Bearbeiten Sie die DG_properties.ini-Beispieleigenschaftsdatei in einem Linux-Betriebssystem, um die Datei mit den spezifischen Werten Ihrer Umgebung anzupassen.
    Durch die Bearbeitung in Linux werden kodierungsbezogene Probleme vermieden, beispielsweise das Abrufen von Windows CRLF am Ende der Zeilen.
  3. Bearbeiten Sie den Abschnitt "Allgemeine Eigenschaften", um die Exportparameter zu definieren, wenn das System ein Oracle Real Application Clusters (Oracle RAC) ist und wenn sich die Kennwortdatei in Oracle Automatic Storage Management (Oracle ASM) befindet.
    ########################################################################################################
    # 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. Bearbeiten Sie den Abschnitt "Primäre Umgebungseigenschaften", und ändern Sie die Parameter, um die primäre Systemumgebung zu definieren.
    #########################################################################################################
    # 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. Bearbeiten Sie den Abschnitt "Standby Env Properties", und ändern Sie die Parameter, um die Standby-Systemumgebung zu definieren.
    ########################################################################################################
    # 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.

Hochladen der Skripts

Laden Sie die Skripte wie folgt auf die primären und sekundären Datenbankhosts hoch:

  1. Laden Sie die folgenden Skripte und Dateien auf den oder die primären Datenbankhosts hoch:
    • 1_prepare_primary_maa_parameters.sh: Upload auf Datenbankhost 1 (für Einzelinstanz oder Oracle RAC).
    • 2_dataguardit_primary.sh: Upload auf alle Datenbankknoten.
    • create_pw_tar_from_asm_root.sh: Upload auf alle Datenbankknoten.
    • DG_properties.ini: Upload auf alle Datenbankknoten.
  2. Erteilen Sie für den oder die primären Datenbankhosts Ausführungsberechtigungen für die Skripte dem BS-Benutzer oracle auf allen Knoten.
  3. Laden Sie die folgenden Dateien auf den oder die neuen sekundären Datenbankhosts hoch:
    • 3_dataguardit_standby_root.sh: Upload auf alle Datenbankknoten.
    • DG_properties.ini: Upload auf alle Datenbankknoten.
  4. Erteilen Sie dem BS-Benutzer root Ausführungsberechtigungen für den oder die sekundären Datenbankhosts.

Oracle Data Guard-Parameter für die primäre Datenbank vorbereiten

Legen Sie die empfohlenen Oracle Data Guard-Parameter der Oracle Maximum Availability Architecture (MAA) in der primären Datenbank fest, bevor Sie Oracle Data Guard konfigurieren. Das Skript 1_prepare_primary_maa_parameters.sh konfiguriert die empfohlenen MAA-Parameter für Oracle Data Guard und erstellt die Standbylogdateien.

MAA bietet Best Practices für Architektur, Konfiguration und Lebenszyklus für Oracle-Datenbanken und ermöglicht High Availability-Serviceebenen für Datenbanken, die sich in On-Premise-, Cloud- oder Hybridkonfigurationen befinden.

Das Skript legt die folgenden empfohlenen MAA-Parameterwerte fest:
  • DB_FLASHBACK_RETENTION_TARGET=1440 exportieren
  • DB_BLOCK_CHECKSUM=FULL exportieren
  • DB_BLOCK_CHECKING=FULL exportieren
  • DB_LOST_WRITE_PROTECT=TYPICAL exportieren
  • LOG_BUFFER=256M exportieren
  • STANDBY_FILE_MANAGEMENT=AUTO exportieren

Hinweis:

Gemäß den Best Practices für MAA muss der Parameter DB_BLOCK_CHECKING in der primären Datenbank auf MEDIUM oder FULL gesetzt werden. Das Skript setzt es auf FULL. Wenn der Performanceoverhead für die Aktivierung von DB_BLOCK_CHECKING auf MEDIUM oder FULL in Ihrer Primärdatenbank nicht akzeptabel ist, setzen Sie DB_BLOCK_CHECKING nur für die Standbydatenbank auf MEDIUM oder FULL.

Führen Sie das Skript aus, um die Parameter festzulegen, bevor Sie Oracle Data Guard konfigurieren. Führen Sie dieses Skript nur einmal aus, unabhängig davon, ob es sich bei der primären Datenbank um eine Oracle Real Application Clusters (Oracle RAC)- oder Einzelinstanzdatenbank handelt.

  1. Melden Sie sich als oracle-Benutzer beim primären Datenbankknoten an.
  2. Führen Sie das Skript 1_prepare_primary_maa_parameters.sh im primären Datenbankhost für eine Einzelinstanzdatenbank oder Node1 für Oracle Real Application Clusters (Oracle RAC) aus.
    Das Skript fordert Sie zur Eingabe des Kennworts des sys-Benutzers auf.

Nachdem die MAA-Parameter festgelegt wurden, erstellt das Skript Standbylogs im Verzeichnis ONLINE_LOG_DEST1. Die Standbylogs haben dieselbe Größe wie die Onlinelogs (REDOLOG_SIZE). Sie haben eine weitere Gruppe als die Onlinelogs, aber dieselbe Anzahl von Threads.

Primäres System für Oracle Data Guard vorbereiten

Bereiten Sie die primären Hosts für eine Oracle Data Guard-Konfiguration vor, und erstellen Sie Ausgabedateien, die später in den Standby-Datenbankhosts benötigt werden.

Das Skript 2_dataguardit_primary.sh erstellt die folgenden Ausgabedateien:
  • TAR-Datei mit der Kennwortdatei
  • TAR-Datei mit dem TDE-Wallet (nur wenn TDE-Verschlüsselung verwendet wird).
  1. Melden Sie sich als oracle-Benutzer beim primären Datenbankknoten an.
  2. Stellen Sie sicher, dass sich die Datei DG_properties.ini im selben Ordner wie das Skript 2_dataguardit_primary.sh befindet und dass sie mit den Umgebungswerten korrekt angepasst wurde.
  3. Führen Sie das Skript 2_dataguardit_primary.sh in der primären DB Node1 aus.

    Das Skript fordert Sie zur Eingabe des Kennworts des sys-Benutzers auf.

    Wenn die Kennwortdatei in ASM gespeichert ist, fordert das Skript den Benutzer auf, das Skript create_pw_tar_from_asm_root.sh auszuführen.

    Das Skript erstellt eine TAR-Datei für die Kennwortdatei und eine TAR-Datei für das transparente Datenverschlüsselungs-Wallet (TDE) (sofern TDE verwendet wird).
  4. Wenn es sich bei der primären Datenbank um eine Oracle Real Application Clusters (Oracle RAC) handelt, führen Sie das Skript in Node2 aus.
  5. (Empfohlen) Legen Sie die Betriebssystemparameter für net.core.rmem_max, net.core.wmem_max fest, um redo transport zu optimieren.
    Wenn Oracle RAC, optimieren Sie diese in beiden Knoten.
    Einen Link zu den MAA-Empfehlungen finden Sie unter Mehr durchsuchen.
  6. (Empfohlen) Legen Sie die Maximum Transmission Unit (MTU) fest, um redo transport zu optimieren.
    Wenn Oracle RAC, optimieren Sie diese in beiden Knoten.
    Einen Link zu den MAA-Empfehlungen finden Sie unter Mehr durchsuchen.

Ausgabedateien kopieren

Kopieren Sie die Ausgabe-TAR-Dateien, die vom primären Datenbankknoten generiert wurden, und laden Sie sie auf die sekundären Datenbankhosts hoch. Wenn Sie über Oracle RAC verfügen, werden die TAR-Dateien in Node1 erstellt. Laden Sie die TAR-Dateien auf beide Knoten in den sekundären Hosts hoch.

Stellen Sie sicher, dass Sie die TAR-Dateien in den durch die Eigenschaften INPUT_PASWORD_TAR und INPUT_WALLET_TAR (bei Verwendung von TDE) angegebenen Verzeichnissen speichern, die in der Datei DG_properties.ini definiert sind.

Sekundäres System für Oracle Data Guard vorbereiten

Bereiten Sie den neuen sekundären (Standby-)Host vor, erstellen Sie die Standbydatenbank, und konfigurieren Sie Oracle Data Guard Broker im sekundären Datenbankknoten.

Das Skript 3_dataguardit_standby_root.sh bereitet die neuen Standby-Datenbankhosts vor, indem die vorhandene Datenbank gelöscht und die erforderlichen Artefakte (TNS-Aliasnamen, NET-Verschlüsselung, Kennwortdatei und Transparent Data Encryption-(TDE-)Wallet) konfiguriert werden. Anschließend erstellt und konfiguriert er die Standbydatenbank mit dem Feature Oracle Recovery Manager (RMAN) restore from service und konfiguriert den Oracle Data Guard-Broker.

Das Skript 3_dataguardit_standby_root.sh verwendet die Umgebungsvariablen, die Sie in der Datei DG_properties.ini definiert haben. Wenn es sich bei der sekundären Datenbank um eine Oracle RAC-Datenbank handelt, führen Sie das Skript auf beiden Knoten aus. Die meisten Aktionen werden ausgeführt, wenn das Skript in Node1 ausgeführt wird und eine Teilmenge der Schritte ausgeführt wird, wenn es in Node2 ausgeführt wird. Führen Sie das Skript nicht in Node2 aus, bevor das Skript in Node1 abgeschlossen wird.

  1. Melden Sie sich als Benutzer root beim sekundären Datenbankknoten an.
    Melden Sie sich bei Oracle RAC bei Node1 an.
  2. Suchen Sie das Skript 3_dataguardit_standby_root.sh in dem Verzeichnis, in das Sie das Skript hochgeladen haben.
  3. Prüfen Sie, ob sich die Datei DG_properties.ini im selben Ordner wie das Skript 3_dataguardit_standby_root.sh befindet und ob die Anpassung im Skript korrekt ist.
  4. Führen Sie das Skript 3_dataguardit_standby_root.sh aus.
    Das Skript fordert Sie zur Eingabe des Kennworts des sys-Benutzers auf.
  5. Wenn Sie Oracle RAC verwenden, melden Sie sich als root bei Node2 an, und führen Sie das Skript 3_dataguardit_standby_root.sh in Knoten 2 aus, sobald das Skript in Node1 abgeschlossen ist.
  6. (Empfohlen) Legen Sie die Betriebssystemparameter für net.core.rmem_max, net.core.wmem_max fest, um redo transport zu optimieren.
    Wenn Oracle RAC, optimieren Sie diese in beiden Knoten.
    Unter "Weitere Informationen" finden Sie einen Link zu Oracle Maximum Availability Architecture-(MAA-)Empfehlungen.
  7. (Empfohlen) Legen Sie die Maximum Transmission Unit (MTU) fest, um redo transport zu optimieren.
    Wenn Oracle RAC, optimieren Sie diese in beiden Knoten.
    Einen Link zu MAA-Empfehlungen finden Sie unter Mehr durchsuchen.

TNS-Eintrag für eine neue Standby-Datenbank hinzufügen

Wenn Sie einer vorhandenen Oracle Data Guard-Instanz (ADDITIONAL_STANDBY=YES) eine neue Standbydatenbank hinzugefügt haben, fügen Sie den TNS-Eintrag hinzu, der auf die zuvor vorhandene Standbydatenbank verweist, in der neuen tnsnames.ora-Standbydatenbank und umgekehrt. Stellen Sie sicher, dass sich die Standby-Datenbanken mit dem Listener-Port verbinden können.