Standby-Datenbank von Data Guard erstellen

Nachdem die primäre Datenbank für Data Guard vorbereitet wurde, kann sie an den Standby-Standort dupliziert werden. Im folgenden Leitfaden wird die aktive Duplizierung verwendet, um eine konsistente Kopie der Datenbank zu erstellen.

Zur Erinnerung: Die folgenden Beispiele werden in diesem Leitfaden verwendet:

Eindeutiger Name der Datenbank Server-Hostnamen RAC-Instanznamen Rolle
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 Primär
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 Standby

Die Bare-Metal-Lösungsserver, auf denen Oracle in diesem Leitfaden ausgeführt wird, werden mit den folgenden Umgebungsvariablen konfiguriert:

Name der Umgebungsvariablen Wert
ORACLE_BASE /apps/oracle/oracle_base
ORACLE_HOME /apps/oracle/19.0.0/db_home1

Je nach Einrichtung müssen Sie möglicherweise die Pfade der Umgebungsvariablen ändern.

Standby-Datenbank einrichten

Datenbankverbindung konfigurieren

Melden Sie sich bei jedem Bare-Metal-Lösungsserver am Standby-Standort an und ändern Sie die Datei $ORACLE_HOME/network/admin/tsnames.ora, um die Nettodienstkonfiguration zu aktualisieren:

DBDG_SITE2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE2) (UR=A)
   )
 )

DBDG_SITE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE1)
    )
  )

Temporären Listener konfigurieren

Zur Vermeidung eines Neustarts des für andere Datenbankverbindungen verwendeten Listeners wird die Datenbankduplizierung mit einem temporären Listener durchgeführt. In diesem Beispiel wird Port 1523 verwendet. Sie können jedoch einen beliebigen Port für die Kommunikation zwischen den Clustern verwenden. Dieser temporäre Listener wird nach der Datenbankduplizierung gelöscht.

  1. Melden Sie sich beim ersten Bare-Metal-Lösungsserver am Standby-Speicherort an, der während der Datenbankduplizierung verwendet werden soll. Ändern Sie die Datei $ORACLE_HOME/network/admin/listener.ora, um die Konfiguration des Nettodienstes zu aktualisieren:

    LISTENER_DBDG_SITE2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523))
        )
      )
    
    SID_LIST_LISTENER_DBDG_SITE2 =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL)
          (ORACLE_HOME = ORACLE_HOME)
          (SID_NAME = DBDG_SITE21)
        )
      )
    ADR_BASE_LISTENER = /apps/oracle/oracle_base
    
  2. Starten Sie den temporären Listener:

    lsnrctl start LISTENER_DBDG_SITE2
    

Standby-Datenbank vorbereiten

  1. Jede Datenbankinstanz benötigt ein Verzeichnis zum Speichern von Audit-Logs. Erstellen Sie auf jedem Bare-Metal-Lösungsserver das Audit-Dateiverzeichnis am Standort der Standby-Datenbank:

    mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
    
  2. Ändern Sie die Datei $ORACLE_HOME/dbs/initDBDG_SITE21.ora, die zuvor auf den Standby-Datenbankserver kopiert wurde:

    1. Legen Sie für db_unique_name den neuen Standby-Datenbanknamen fest.
    2. Ändern Sie alle instanzspezifischen Parameter, um die Instanznamen für die Standby-Datenbank widerzuspiegeln. Dazu einige Beispiele:
      • instance_number
      • thread
      • undo_tablespace
    3. Legen Sie mit dem Parameter audit_file_dest das im vorherigen Schritt erstellte Verzeichnis fest.
    4. Wenn die ASM-Laufwerksgruppen an jedem Speicherort unterschiedliche Namen verwenden, ändern Sie die Parameter db_file_name_convert und log_file_name_convert entsprechend den neuen Dateispeicherorten.
    5. Kommentieren Sie den Parameter control_files aus.

    Das folgende Beispiel zeigt eine aktualisierte Datenbankparameterdatei mit Änderungen anhand der in diesem Leitfaden bereitgestellten Beispiele. Beachten Sie, dass Ihre Parameterdatei zusätzliche Parameter enthält, die für Ihre Datenbankeinrichtung spezifisch sind. Es werden nur die Parameter angezeigt, für die eine Änderung am Standby-Vorgang erforderlich ist:

    *.db_unique_name='DBDG_SITE2'
    DBDG_SITE21.instance_number=1
    DBDG_SITE22.instance_number=2
    DBDG_SITE21.thread=1
    DBDG_SITE22.thread=2
    DBDG_SITE21.undo_tablespace='UNDOTBS1'
    DBDG_SITE22.undo_tablespace='UNDOTBS2'
    *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump'
    #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'
    
  3. Fügen Sie in der Datei /etc/oratab einen Eintrag hinzu, damit der Befehl oraenv Umgebungsvariablen für die Standby-Datenbank festlegen kann:

    DBDG_SITE21:ORACLE_HOME:N
    

Standby-Datenbank erstellen

  1. Legen Sie die Umgebungsvariable ORACLE_SID fest, damit Sie eine Verbindung zur Standby-Datenbank herstellen können:

    source oraenv <<< "DBDG_SITE21"
    

    Sie sollten die Antwort The Oracle base has been set to /apps/oracle/oracle_base erhalten.

  2. Bevor Sie die primäre Datenbank duplizieren, müssen Sie die Standby-Instanz manuell auf einem Knoten starten. Melden Sie sich beim ersten Bare-Metal-Lösungsserver am Standby-Standort an, starten Sie SQL*Plus und starten Sie dann die Standby-Datenbank in nomount mode mit pfile:

    sqlplus / as sysdba
    
    STARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    

    Wenn der Vorgang erfolgreich war, erhalten Sie eine Antwort ähnlich der folgenden:

    ORACLE instance started.
    Total System Global Area 1.2885E+10 bytes
    Fixed Size 15988824 bytes
    Variable Size 1845493760 bytes
    Database Buffers 1.1006E+10 bytes
    Redo Buffers 17563648 bytes
    
  3. Beenden Sie SQL*Plus nach dem Starten der Instanz:

    EXIT;
    
  4. Prüfen Sie die Verbindung zur Standby-Datenbank. Versuchen Sie von jedem Bare-Metal-Lösungsserver am primären Datenbankstandort aus, mithilfe von SQL*Plus eine Verbindung zur Standby-Instanz herzustellen. Geben Sie das SYS-Remote-Anmeldepasswort manuell ein, um eine Verbindung zur Instanz herzustellen.

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    Bei Erfolg wird eine Standard-SQL*Plus-Eingabeaufforderung angezeigt, in der Sie die Instanzparameter prüfen können:

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    Sie sollten eine Antwort ähnlich der folgenden erhalten:

                    NAME        TYPE                          VALUE
        ---------------- ----------- ------------------------------
          db_unique_name      string      DBDG_SITE2
    
  5. Beenden Sie SQL*Plus, nachdem Sie den Parameter DB_UNIQUE_NAME überprüft haben:

    EXIT;
    
  6. Stellen Sie eine Verbindung zu Recovery Manager her und führen Sie dann den Befehl duplicate aus, um die Standby-Datenbank aus der aktiven primären Datenbank zu duplizieren:

    rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
    
    DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
    

    Bei erfolgreicher Ausführung sollten Sie eine Nachricht ähnlich der folgenden erhalten:

    Finished Duplicate Db at ...
    
  7. Beenden Sie den Recovery Manager:

    EXIT;
    

Erstellen der Standby-Datenbank abschließen

  1. Während der Datenbankduplizierung erstellt ASM neue Kontrolldateien für die Standby-Datenbank. Stellen Sie eine Verbindung zur neuen Standby-Instanz her und rufen Sie die neuen Kontrolldateinamen ab. Das folgende Beispiel zeigt zwei Kontrolldateien, die in den Laufwerksgruppen +DATA und +RECO gespeichert sind:

    sqlplus / as sysdba
    
    SET LINESIZE 140
    COLUMN NAME FORMAT a15
    COLUMN VALUE FORMAT a125
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';
    

    Die Namen der Kontrolldateien werden im Feld "Wert" angezeigt:

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. Notieren Sie sich die Namen der Kontrolldateien aus dem vorherigen Schritt und ersetzen Sie alle Einträge für den Parameter control_files in $ORACLE_HOME/dbs/initDBDG_SITE21.ora durch die neuen Werte. Wenn es mehrere Kontrolldateien gibt, kapseln Sie jede in einfache Anführungszeichen, getrennt durch ein Komma:

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. Stellen Sie mit SQL*Plus eine Verbindung zur Standby-Datenbank her und erstellen Sie eine neue spfile aus der geänderten pfile:

    sqlplus / as sysdba
    
    CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    
  4. Kopieren Sie die Passwortdatei mit dem Befehl asmcmd in die ASM-Laufwerksgruppe:

    asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
    
  5. Fahren Sie die Standby-Datenbankinstanz herunter und löschen Sie die temporäre Datei pfile und die Passwortdatei:

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. Beenden Sie den temporären Listener für die Datenbankduplizierung auf dem ersten Bare-Metal-Lösungsserver am Standort der Standby-Datenbank:

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. Entfernen Sie die temporären Einträge in der Datei $ORACLE_HOME/network/admin/listener.ora auf dem ersten Bare-Metal-Lösungsserver am Standort der Standby-Datenbank.

  8. Fügen Sie die neue Standby-Datenbank und die neuen Instanzen mit dem Befehl srvctl der Cluster-Registry hinzu:

    srvctl add database \
      -db DBDG_SITE2 \
      -oraclehome /apps/oracle/19.0.0/db_home1 \
      -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \
      -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \
      -role PHYSICAL_STANDBY \
      -startoption MOUNT
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE21 \
      -node site2db1
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE22 \
      -node site2db2
    
  9. Starten Sie die Standby-Datenbank mit dem Befehl srvctl:

    srvctl start database -db DBDG_SITE2
    

Nächste Schritte

Data Guard-Broker konfigurieren und aktivieren.