Deployment der Topologie vorbereiten

Damit Data Guard funktioniert, müssen die beiden Datenbanken in den verschiedenen Regionen kommunizieren. Daher müssen Sie eine Remote-Peering-Verbindung zwischen den beiden Regionen in OCI über die jeweiligen DRGs einrichten. Die DRGs werden vom OracleDB für das Azure-Setup erstellt. Sie müssen also nur eine Remote-Peering-Verbindung zwischen den vorhandenen DRGs herstellen.

Netzwerk einrichten

So richten Sie Ihr Netzwerk ein:

  1. Richten Sie die Netzwerkkonnektivität für die Azure-VM und OracleDB für Azure-Datenbanksysteme ein.
    • Stellen Sie sicher, dass der SSH-Private Key für das Oracle DB-System auf der Azure-VM verfügbar ist.
    • Testen Sie die Konnektivität zwischen den Azure-VMs und der OracleDB für Azure-DB-Systeme.
  2. Richten Sie das Netzwerk für Datenbanksysteme in OCI ein.
    1. Navigieren Sie zuerst zu den VCN-Details des DB-Systems in Region 1, und wählen Sie Anhänge für dynamisches Routinggateway, dann den DRG-Namen aus, um die Details des DRG in Region 1 zu laden. Wählen Sie dann Remote-Peering-Verbindung - Anhänge aus. Führen Sie in einem zweiten Browserfenster genau dasselbe für Region 2 aus.
    2. Wählen Sie als Nächstes in beiden Regionen die Option Remote-Peering-Verbindung erstellen aus, um eine RPC zu erstellen.
    3. Wenn beide RPCs erstellt wurden, wählen Sie den RPC-Namen in Region 1 aus, und kopieren Sie die OCID.
    4. Wählen Sie in Region 2 den RPC-Namen aus, und wählen Sie Verbindung herstellen aus. Wählen Sie den richtigen Regionsnamen für Region 1 (in der wir eine Verbindung herstellen) aus, und geben Sie die OCID für die RPC in Region 1 an, die Sie im vorherigen Schritt kopiert haben. Wenige Augenblicke nach dem Aufbau der Verbindung sollte der Peer-Status "Peered" lauten.
    5. Als Nächstes lassen Sie Traffic zwischen den VCNs in den beiden Regionen zu. Navigieren Sie zu den VCN-Details, und wählen Sie die Standardsicherheitsliste aus. Wählen Sie Ingress-Regeln hinzufügen aus, um Traffic aus dem CIDR-Bereich des anderen VCN zuzulassen.
    6. Stellen Sie schließlich eine Verbindung von den VMs in Azure zu den jeweiligen OCI-Basis-DB-Systemen her. Bearbeiten Sie die Datei tnsnames.ora, damit beide Basis-DB-Systeme eine Verbindung zur anderen Datenbank haben.
    7. Stellen Sie sicher, dass tnsping von beiden DB-Systemen in die andere Datenbank einwandfrei funktioniert.

Oracle Database for Azure DR-Konfiguration einrichten

Um die Oracle-Datenbank für die Azure-DR-Konfiguration einzurichten, müssen Sie eine primäre und eine sekundäre Datenbank vorbereiten, wie unten beschrieben.

Hinweis:

Klicken Sie auf Kopieren, um das Befehlsbeispiel zum Einfügen in die Befehlszeile in der Zwischenablage zu speichern. Stellen Sie sicher, dass Sie variables durch für Ihre Implementierung spezifische Werte ersetzen.

Primärdatenbank vorbereiten

Um die Primärdatenbank vorzubereiten, müssen Sie statische Listener konfigurieren, die Datei tnsnames.ora aktualisieren und verschiedene Datenbankeinstellungen und Parameter konfigurieren.

  1. Prüfen Sie in der Eingabeaufforderung SQL> die folgenden Informationen:
    • Prüfen, ob Datenbank-Flashback aktiviert ist
    • Prüfen, ob Force-Datenbanklogging aktiviert ist
    • Prüfen Sie, ob sich die Datenbank im Archive-Logmodus befindet
    • Prüfen Sie, ob sich die Datenbank im Open-Modus befindet
    • Prüfen Sie, ob sich die Datenbank in der Primärdatenbankrolle befindet
    Gehen Sie wie folgt vor:
    select log_mode, FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE from v$database ;
    Die Ausgabe sollte folgendermaßen aussehen:
    LOG_MODE              FORCE_LOGGING               FLASHBACK_ON               OPEN_MODE                 DATABASE_ROLE
    ----------------      ------------------------   ----------------------     --------------------        -----------------------
    ARCHIVELOG            YES                         YES                        READ WRITE                  PRIMARY
  2. Prüfen Sie, ob die automatische Standby-Dateiverwaltung auf "Auto" gesetzt ist, indem Sie den folgenden Befehl ausführen:
    show parameter standby_file_management
    Die Ausgabe sollte folgendermaßen aussehen:
    NAME                                          TYPE          VALUE
    ------------------------------------          -----------  ----------
    standby_file_management                       string       AUTO
  3. Legen Sie die Broker-Konfigurationsdateien fest:
    show parameter dg_broker_config_file1;
    Die Ausgabe sollte folgendermaßen aussehen:
    NAME                                          TYPE          VALUE
    ------------------------------------         ----------- ------------------------------
    dg_broker_config_file1                        string        /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1dbuks_898_lhr.dat
    

    Geben Sie dann folgenden Befehl ein:

    show parameter dg_broker_config_file2;
    Die Ausgabe sollte folgendermaßen aussehen:
    
    NAME                                                     TYPE          VALUE
    ------------------------------------         ----------- ------------------------------
    dg_broker_config_file2                             string          /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2dbuks_898_lhr.dat
  4. Aktivieren Sie Data Guard Broker:
    show parameter dg_broker_start
    Die Ausgabe sollte folgendermaßen aussehen:
    NAME                                             TYPE         VALUE
    ------------------------------------            ----------- --------------
    dg_broker_start                                  boolean      FALSE
    Geben Sie dann die folgenden Befehle ein:
    alter system set dg_broker_start=true scope=both;
    
    show parameter dg_broker_start
    Die Ausgabe sollte folgendermaßen aussehen:
    NAME                                             TYPE        VALUE
    ------------------------------------            ----------- --------------
    dg_broker_start                                  boolean     TRUE
  5. Notieren Sie sich in der Eingabeaufforderung (z.B. [oracle@ldbuksdr ]$) den listerner-Status:
    lsnrctl status
  6. Beachten Sie die Details der Datenbankkonfiguration:
    srvctl config database -d db_unique_name
  7. Halten Sie die tns-Einträge fest:
    cat $ORACLE_HOME/network/admin/tnsnames.ora
  8. Beachten Sie die Ausgabe von sqlnet.ora:
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. Kopieren Sie die Kennwortdatei in das Standby-DB-System im Speicherort /tmp, indem Sie die folgenden Befehle eingeben:
    cd .ssh
    scp -i private_key /tmp/orapw<sid> opc@ip_standby_vm:/tmp/orapwsid   
  10. Suchen Sie die Wallet-Dateien, und kopieren Sie sie in das Standby-DB-System im Speicherort /tmp:
    select CON_ID, WRL_PARAMETER, WRL_TYPE, STATUS, WALLET_TYPE from V$ENCRYPTION_WALLET;
    Die Ausgabe sollte folgendermaßen aussehen:
    CON_ID         WRL_PARAMETER                                                                      STATUS       WALLET_TYPE
    ----------    ------------------------------------------------------------------------------     ------------  ------------ ----------------------------
    1              /opt/oracle/dcs/commonstore/wallets/dbuks_898_lhr/tde/                             OPEN          AUTOLOGIN
    2                                                                                                 OPEN          AUTOLOGIN
    3                                                                                                 OPEN          AUTOLOGIN
    
    Geben Sie anschließend Folgendes ein:
    cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde
    ls -ltra
    
    Die Anzeige sollte in etwa wie folgt aussehen:
    -rw------- 1 oracle asmadmin  5467 Jun 19 18:59 ewallet.p12
    -rw------- 1 oracle asmadmin  5512 Jun 19 18:59 cwallet.sso
    
    Geben Sie dann die folgenden Befehle ein (wobei db_unique_name der eindeutige Name der Datenbank des Wallets ist):
    
    [oracle@ ~]$ cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12/tmp/cwallet.p12
    cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso/tmp/cwallet.sso
    chmod 777 /tmp/ewallet.p12
    chmod 777 /tmp/cwallet.sso
    scp -i private_key /tmp/ewallet.p12 opc@ip_standby_vm:/tmp/ewallet.p12
    scp -i private_key /tmp/cwallet.sso opc@ip_standby_vm:/tmp/cwallet.sso.
  11. Konfigurieren Sie den statischen Listener.
    Für die anfängliche Instanziierung der Standbydatenbank ist ein statischer Listener erforderlich. Wenn eine Datenbank heruntergefahren ist, aktiviert ein statischer Listener eine Remoteverbindung zu einer Instanz, sodass Sie die Instanz mit Oracle Data Guard starten können. Stellen Sie sicher, dass die listener.ora-Dateien keine Zeilenumbrüche oder Leerzeichen enthalten.

    Hängen Sie in der Primärdatenbank die Datei SID_LIST_LISTENER in der Datei listener.ora an, um den eindeutigen Datenbanknamen, das Oracle Home und die Oracle System Identifier (SID) der Primärdatenbank einzuschließen.

    lsnrctl status 
    vi listener.ora 
    Fügen Sie den folgenden Eintrag zu listener.ora hinzu. Dabei gilt:
    • DB_UNIQUE_NAME ist der eindeutige Name der Primärdatenbank.
    • ORACLE_HOME ist das lokale Oracle Home der Primärdatenbank.
    • ORACLE SID ist die SID der Primärdatenbank.
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
    (SID_NAME = ORACLE SID)))
    Der Eintrag sollte ungefähr wie folgt aussehen (Ihre Einträge für GLOBAL_DBNAME, ORACLE_HOME und SID_NAME variieren):
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)
    (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
    Laden Sie den Listener neu, und prüfen Sie dessen Status.
    lsnrctl reload
    lsnrctl status
  12. Konfigurieren Sie tns-Einträge.
    Sie benötigen Einträge für jede Datenbank in der primären und der Standby-tnsnames.ora-Datei, um den ordnungsgemäßen Redo-Transport sicherzustellen. IP-Adressen werden verwendet, da zwischen den Datenbanken kein DNS zum Auflösen von Servernamen in IP-Adressen vorhanden ist. Verwenden Sie das folgende Beispiel, um konfigurationsrelevante Werte zu ersetzen. Oracle Real Application Clusters-(Oracle RAC-)Konfigurationen können den Namen des Scan Listeners nicht auflösen. Daher müssen Sie eine Adressliste verwenden, um alle Knoten zu definieren. Diese werden später hinzugefügt. Die anfängliche Instanz darf nur eine IP-Adresse in den tns-Einträgen auflisten, um sicherzustellen, dass Oracle Recovery Manager (RMAN) immer eine Verbindung zu denselben Knoten herstellt.
    [oracle@~]$ cd $ORACLE_HOME/network/admin 
    [oracle@~]$ vi tnsnames.ora
    Der Eintrag in der Datei tnsnames.ora sollte folgendermaßen aussehen:
    DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) 
    
    DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))

Standbydatenbank vorbereiten

Bereiten Sie als Nächstes die Standbydatenbank vor.

  1. Löschen Sie die vom Oracle Database for Azure-Tooling erstellte Datenbank manuell.
    Speichern Sie vor dem Löschen der Standbydatenbank die aktuelle db_unique_name, und notieren Sie sich den Wallet-Speicherort, wie er später verwendet wird. Die folgende Abfrage enthält Details zum Wallet-Speicherort.
    1. Geben Sie in der Eingabeaufforderung sqlplus Folgendes ein:
      select * from V$ENCRYPTION_WALLET; 
    2. Bereiten Sie als Nächstes das Skript rm_dbfiles.sql vor, um datenbankbezogene Dateien zu entfernen:
      srvctl config database -d db_unique_name
    3. Führen Sie das folgende Skript aus, um die Datenbank, die Sie als Standby-Datenbank erstellen, herunterzufahren und die Datenbankdateien zu entfernen:
      vi rm_dbfiles.sql 
      set heading off linesize 999 pagesize 0 feedback off trimspool on 
      spool /home/oracle/demo/files.lst 
      select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile; 
      spool off 
      create pfile='/home/oracle/demo/ORACLE_UNQNAME.pfile' from spfile; 
      exit
      
    4. Wechseln Sie dann als System-DBA zur sqlplus-Eingabeaufforderung:
      sqlplus "/ as sysdba"
      Und führen Sie diese Befehle aus:
      @rm_dbfiles.sql
      exit
    5. Als Nächstes erteilen Sie die Berechtigung zum Lesen, Schreiben und Ausführen (wobei db_unique_name der eindeutige Name der betroffenen Datenbank ist):
      chmod 777 files.lst
      srvctl stop database -d db_unique_name
    6. Speichern und führen Sie das Skript aus:
      ./files.lst 
    Alle Dateien für die Startdatenbank wurden jetzt entfernt.
  2. Kopieren Sie die in /tmp empfangene Kennwortdatei und Wallet-Dateien aus der Primärdatenbank in die entsprechenden Speicherorte im DB-System der Standbydatenbank.
    1. Kopieren Sie die Datenbankkennwortdatei und die in /tmp empfangenen Wallet-Dateien von der Primärdatenbank in die entsprechenden Speicherorte im DB-System der Standbydatenbank (wobei orapwsid das SID-Passwort ist):
      sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid 
      Beispiel:
      sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      Die Ausgabe sollte folgendermaßen aussehen:
      
      -rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    2. Prüfen Sie, ob die md5sum-Ausgabe der Kennwortdatei mit der Primär- und der Standbydatenbank übereinstimmt (wobei orapwsid das SID-Passwort ist):
      md5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid 
      Die Ausgabe für die Primärdatenbank sollte in etwa wie folgt aussehen (wobei die orapwsid orapwdbuks lautet):
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      
      Und für die Standby-Datenbank:
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    3. Entfernen Sie vorhandene Wallet-Dateien, und kopieren Sie Wallet-Dateien aus /tmp in den TDE-Speicherort (wobei db_unique_name der eindeutige Name der betroffenen Datenbank ist):
      [oracle@ ~]$ cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/
      rm ewallet.p12 cwallet.sso
      sudo cp /tmp/ewallet.p12 /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
      sudo cp /tmp/cwallet.sso /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.ss
      chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
      sudo chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso
  3. Statischen Listener konfigurieren:
    1. Hängen Sie in der Standbydatenbank in OCI die Datei SID_LIST_LISTENER an, um den eindeutigen Datenbanknamen, das Oracle Home von OCI und die Oracle System Identifier (SID) der Primärdatenbank einzuschließen.
      lsnrctl status
      vi listener.ora
    2. Fügen Sie den folgenden Eintrag zur Datei listener.ora hinzu. Dabei gilt:
      • DB_UNIQUE_NAME ist der Name der Primärdatenbank.
      • ORACLE_HOME ist das lokale Oracle Home der Primärdatenbank.
      • ORACLE SID ist die SID der Primärdatenbank.
       SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
      (SID_NAME = ORACLE_SID)))
      Der Eintrag sollte beispielsweise wie folgt aussehen:
      SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= dbuks_r2j_ams. odsp083156.cvcn.oraclevcn.com)
      (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks))) 
    3. Listener neu laden und Status prüfen:
      lsnrctl reload 
      lsnrctl status
  4. Konfigurieren Sie die tns-Einträge:
    cd $ORACLE_HOME/network/admin
    vi tnsnames.ora
    Der Eintrag in der Datei tnsnames.ora sollte folgendermaßen aussehen:
     DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) 
    
    DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))