Primäre Datenbank von Data Guard vorbereiten
Data Guard erfordert eine primäre Datenbank und mindestens eine Standby-Datenbank, um zu funktionieren. Bevor Sie Data Guard für die Bare-Metal-Lösung einrichten, erstellen Sie die primäre Datenbank.
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.
Primäre Datenbank einrichten
Melden Sie sich beim ersten Bare-Metal-Lösungsserver an, der die primäre Datenbank hostet.
Fügen Sie in der Datei
/etc/oratab
einen Eintrag hinzu, damit der Befehloraenv
Umgebungsvariablen für die primäre Datenbank festlegen kann. Ändern Sie den Instanznamen so, dass er der ausgeführten Instanz auf jedem Knoten entspricht, und geben Sie den vollständigen Pfad zur Startseite der Oracle-Datenbank an:DBDG_SITE11:ORACLE_HOME:N
Legen Sie die Umgebungsvariable
ORACLE_SID
fest, damit Sie eine Verbindung zur primären Datenbank herstellen können:source oraenv <<< "DBDG_SITE11"
Sie sollten die Antwort
The Oracle base has been set to /apps/oracle/oracle_base
erhalten.
Datenbank-Logging konfigurieren und Flashback-Datenbank aktivieren
Starten Sie SQL*Plus und aktivieren Sie
force logging
, damitnologging
-Tablespaces, die der Datenbank hinzugefügt werden, protokolliert werden:sqlplus / as sysdba
ALTER DATABASE FORCE LOGGING;
Prüfen Sie, ob
archivelog mode
undflashback database
aktiviert sind:ARCHIVE LOG LIST; SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
Wenn
archivelog mode
undflashback database
nicht aktiviert sind, aktivieren Sie sie mit den folgenden SQL-Befehlen:Beenden Sie die geclusterte Datenbank, damit Sie die erforderlichen Änderungen vornehmen können:
srvctl stop database -d
Führen Sie die erforderlichen SQL-Befehle aus, um
archivelog mode
undflashback database
zu aktivieren:STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON; ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SID='*' SCOPE=BOTH; ALTER DATABASE OPEN; SHUTDOWN IMMEDIATE; EXIT;
Starten Sie die geclusterte Datenbank noch einmal:
srvctl start database -d DBDG_SITE1
Datenbank für Data Guard vorbereiten
Melden Sie sich beim ersten Bare-Metal-Lösungsserver an, der die primäre Datenbank hostet, und legen Sie die Umgebungsvariable
ORACLE_SID
fest, damit Sie eine Verbindung zur primären Datenbank herstellen können:source oraenv <<< "DBDG_SITE11"
Sie sollten die Antwort
The Oracle base has been set to /apps/oracle/oracle_base
erhalten.Starten Sie SQL*Plus und ändern Sie dann die Initialisierungsparameter für die Datenbank, die für die Data Guard-Konfiguration und -Dienste erforderlich sind:
sqlplus / as sysdba
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SID='*' SCOPE=SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SID='*' SCOPE=BOTH; ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SID='*' SCOPE=SPFILE; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
Prüfen Sie, ob in der Datenbank Standby-Wiederherstellungs-Logs vorhanden sind. Jeder Thread muss eine zusätzliche Standby-Loggruppe für den Standby-Modus haben, also eine mehr als die Anzahl der Online-Wiederherstellungs-Loggruppen beträgt.
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
Im folgenden Beispiel hat vier Online-Wiederherstellungs-Logs pro Thread, aber keine Standby-Wiederherstellungs-Loggruppen. Da es vier Online-Wiederherstellungs-Loggruppen gibt, müssen für jeden Thread fünf Standby-Loggruppen erstellt werden:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4
Wenn genügend Standby-Loggruppen vorhanden sind, überspringen Sie diesen Schritt. Standby-Wiederherstellungs-Loggruppen müssen dieselbe Größe haben wie jede Online-Wiederherstellungs-Loggruppe. Erstellen Sie die erforderliche Anzahl von Standby-Loggruppen mit dem folgenden PL/SQL-Code:
SET FEEDBACK OFF SET SERVEROUTPUT ON DECLARE CURSOR cur_thread IS SELECT THREAD# THREAD, COUNT(*) COUNT FROM V$LOG GROUP BY THREAD#; standbylog_count NUMBER := 0; standbylog_group NUMBER := 0; standbylog_size NUMBER := 0; last_group_number NUMBER; sqlstmt VARCHAR2(200); BEGIN SELECT MAX(GROUP#), MAX(BYTES) INTO last_group_number, standbylog_size FROM V$LOG; standbylog_group := last_group_number + 1; FOR rec_thread IN cur_thread LOOP standbylog_count := rec_thread.count + 1; FOR i IN 1..standbylog_count LOOP sqlstmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rec_thread.thread || ' GROUP ' || TO_CHAR(standbylog_group) || ' SIZE ' || standbylog_size || ';'; DBMS_OUTPUT.PUT_LINE( sqlstmt); standbylog_group := standbylog_group + 1; END LOOP; END LOOP; END; / SET FEEDBACK ON
Die folgende Beispielausgabe weist Sie an, fünf Standby-Loggruppen für jeden der beiden Threads zu erstellen:
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 9 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 SIZE 2147483648;
Prüfen Sie, ob die Standby-Wiederherstellungs-Logs für Ihre Konfiguration korrekt eingerichtet sind:
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
Die folgende Ausgabe hat vier Online-Wiederherstellungs-Loggruppen pro Thread und fünf Standby-Wiederherstellungs-Loggruppen pro Thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4 Standby logfile groups in thread 1: 5 Standby logfile groups in thread 2: 5
Beenden Sie SQL*Plus:
EXIT;
Datenbankparameter und Passwortdateien auf die Standby-Server kopieren
Erstellen Sie eine Datenbankparameterdatei und kopieren Sie sie auf den Standby-Server:
Erstellen Sie einen Ordner für die Standby-Datenbankparameterdatei (
pfile
):mkdir /home/oracle/backup
Starten Sie SQL*Plus und erstellen Sie dann die Standby-Datenbank
pfile
:sqlplus / as sysdba
CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
Beenden Sie SQL*Plus und kopieren Sie dann
pfile
auf den ersten Bare-Metal-Lösungsserver am Standby-Speicherort:EXIT;
scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
Achten Sie darauf, dass das SYS-Remote-Anmeldepasswort sicher gespeichert wird. Wenn Sie das Passwort nicht kennen, setzen Sie es zurück.
Kopieren Sie die Passwortdatei in den Standby-Cluster:
Rufen Sie den Speicherort der Passwortdatei mit dem Befehl
srvctl
ab:srvctl config database -db DBDG_SITE1 | grep -i password
Die folgende Ausgabe zeigt den Speicherort eines Passwortdateispeichers in ASM:
Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
Erstellen Sie mit dem Befehl
asmcmd
eine temporäre Kopie der Passwortdatei im lokalen Dateisystem:asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
Kopieren Sie die Passwortdatei auf den ersten Bare-Metal-Lösungsserver am Standby-Speicherort und löschen Sie dann die temporäre Kopie vom Bare-Metal-Lösungsserver am primären Speicherort:
scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21 rm /tmp/orapwDBDG_SITE21
Datenbankverbindung konfigurieren
Bearbeiten Sie die Datei $ORACLE_HOME/network/admin/tsnames.ora
auf jedem Bare-Metal-Lösungsserver am primären Datenbankspeicherort, um die Nettodienstkonfiguration zu aktualisieren.
Die Datei enthält drei Einträge. Eine für jede Datenbank und einen temporären Eintrag während der Datenbankduplizierung, den Sie später löschen:
DBDG_SITE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE1) (UR=A)
)
)
DBDG_SITE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE2) (UR=A)
)
)
DBDG_SITE2_FOR_DUPLICATION =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = site2db1)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = DBDG_SITE21) (UR=A)
)
)
Die primäre Datenbank kann jetzt in einer Data Guard-Konfiguration verwendet werden.
Weitere Informationen
Erstellen Sie als Nächstes die Standby-Datenbank von Data Guard.