- Stellen Sie eine Multicloud-Disaster-Recovery-Topologie mit Oracle Database Service for Azure bereit
- Deployment der Topologie vorbereiten
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:
- 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.
- Richten Sie das Netzwerk für Datenbanksysteme in OCI ein.
- 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.
- Wählen Sie als Nächstes in beiden Regionen die Option Remote-Peering-Verbindung erstellen aus, um eine RPC zu erstellen.
- Wenn beide RPCs erstellt wurden, wählen Sie den RPC-Namen in Region 1 aus, und kopieren Sie die OCID.
- 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.
- 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.
- 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. - 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 Sievariables
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.
- 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
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
- 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
- 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
- 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
- Notieren Sie sich in der Eingabeaufforderung (z.B.
[oracle@ldbuksdr ]$
) den listerner-Status:lsnrctl status
- Beachten Sie die Details der Datenbankkonfiguration:
srvctl config database -d db_unique_name
- Halten Sie die
tns
-Einträge fest:cat $ORACLE_HOME/network/admin/tnsnames.ora
- Beachten Sie die Ausgabe von
sqlnet.ora
:cat $ORACLE_HOME/network/admin/sqlnet.ora
- 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
- 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 (wobeidb_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.
- 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 Dateilistener.ora
an, um den eindeutigen Datenbanknamen, das Oracle Home und die Oracle System Identifier (SID) der Primärdatenbank einzuschließen.
Fügen Sie den folgenden Eintrag zulsnrctl status vi listener.ora
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.
Der Eintrag sollte ungefähr wie folgt aussehen (Ihre Einträge fürSID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE SID)))
GLOBAL_DBNAME
,ORACLE_HOME
undSID_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
- 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 Dateitnsnames.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.
- 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.
- Geben Sie in der Eingabeaufforderung sqlplus Folgendes ein:
select * from V$ENCRYPTION_WALLET;
- Bereiten Sie als Nächstes das Skript
rm_dbfiles.sql
vor, um datenbankbezogene Dateien zu entfernen:srvctl config database -d db_unique_name
- 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
- Wechseln Sie dann als System-DBA zur sqlplus-Eingabeaufforderung:
sqlplus "/ as sysdba"
Und führen Sie diese Befehle aus:@rm_dbfiles.sql
exit
- 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
- Speichern und führen Sie das Skript aus:
./files.lst
- Geben Sie in der Eingabeaufforderung sqlplus Folgendes ein:
- Kopieren Sie die in
/tmp
empfangene Kennwortdatei und Wallet-Dateien aus der Primärdatenbank in die entsprechenden Speicherorte im DB-System der Standbydatenbank.- 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):
Beispiel:sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid
Die Ausgabe sollte folgendermaßen aussehen:sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
-rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- Prüfen Sie, ob die md5sum-Ausgabe der Kennwortdatei mit der Primär- und der Standbydatenbank übereinstimmt (wobei orapwsid das SID-Passwort ist):
Die Ausgabe für die Primärdatenbank sollte in etwa wie folgt aussehen (wobei die orapwsidmd5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid
orapwdbuks
lautet):
Und für die Standby-Datenbank:b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- Entfernen Sie vorhandene Wallet-Dateien, und kopieren Sie Wallet-Dateien aus
/tmp
in den TDE-Speicherort (wobeidb_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
- 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):
- Statischen Listener konfigurieren:
- 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
- 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.
Der Eintrag sollte beispielsweise wie folgt aussehen:SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE_SID)))
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)))
- Listener neu laden und Status prüfen:
lsnrctl reload
lsnrctl status
- Hängen Sie in der Standbydatenbank in OCI die Datei
- Konfigurieren Sie die
tns
-Einträge:cd $ORACLE_HOME/network/admin
vi tnsnames.ora
Der Eintrag in der Dateitnsnames.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)))