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.
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
Starten Sie den temporären Listener:
lsnrctl start LISTENER_DBDG_SITE2
Standby-Datenbank vorbereiten
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
Ändern Sie die Datei
$ORACLE_HOME/dbs/initDBDG_SITE21.ora
, die zuvor auf den Standby-Datenbankserver kopiert wurde:- Legen Sie für
db_unique_name
den neuen Standby-Datenbanknamen fest. - Ändern Sie alle instanzspezifischen Parameter, um die Instanznamen für die Standby-Datenbank widerzuspiegeln. Dazu einige Beispiele:
instance_number
thread
undo_tablespace
- Legen Sie mit dem Parameter
audit_file_dest
das im vorherigen Schritt erstellte Verzeichnis fest. - Wenn die ASM-Laufwerksgruppen an jedem Speicherort unterschiedliche Namen verwenden, ändern Sie die Parameter
db_file_name_convert
undlog_file_name_convert
entsprechend den neuen Dateispeicherorten. - 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'
- Legen Sie für
Fügen Sie in der Datei
/etc/oratab
einen Eintrag hinzu, damit der Befehloraenv
Umgebungsvariablen für die Standby-Datenbank festlegen kann:DBDG_SITE21:ORACLE_HOME:N
Standby-Datenbank erstellen
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.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
mitpfile
: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
Beenden Sie SQL*Plus nach dem Starten der Instanz:
EXIT;
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
Beenden Sie SQL*Plus, nachdem Sie den Parameter
DB_UNIQUE_NAME
überprüft haben:EXIT;
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 ...
Beenden Sie den Recovery Manager:
EXIT;
Erstellen der Standby-Datenbank abschließen
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
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'
Stellen Sie mit SQL*Plus eine Verbindung zur Standby-Datenbank her und erstellen Sie eine neue
spfile
aus der geändertenpfile
:sqlplus / as sysdba
CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
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
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
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
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.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
Starten Sie die Standby-Datenbank mit dem Befehl
srvctl
:srvctl start database -db DBDG_SITE2
Nächste Schritte
Data Guard-Broker konfigurieren und aktivieren.