Oracle Data Guard 19c Physical Standby (mit Broker; Single Instance, Oracle Restart, RAC)
OracleStufe: FortgeschrittenDauer: 2–4 Stunden (je nach Datenmenge)Baut für eine laufende 19c-Primary-Datenbank mit RMAN DUPLICATE … FROM ACTIVE DATABASE eine Physical Standby auf und nimmt sie in den Data Guard Broker auf. Ergebnis: eine Standby, die Redo in Echtzeit empfängt und anwendet, eine Broker-Konfiguration im Status SUCCESS und ein getesteter Switchover (optional ein Failover-/Reinstate-Test und Fast-Start Failover + Observer). Primary und Standby können jeweils Single Instance, Oracle Restart oder RAC sein; für den laufenden Betrieb und Störungen einer bestehenden Konfiguration nutzt du den Data-Guard-Betriebsguide.
Topologie: Primary (Single Instance / Oracle Restart / RAC mit 2–8 Nodes) + Physical Standby (Single Instance / Oracle Restart / RAC) + optionaler Observer
Vor dem Start
- Auf …allen Standby-Nodes…dem Standby-Server… ist Oracle-Database-Software derselben Version und desselben RU wie auf der Primary installiert (nur Software, keine Datenbank), mit demselben ORACLE_HOME-Pfad (…). Gleiche Betriebssystemfamilie und gleiche Endianness.… Auf der Standby ist Grid Infrastructure (…Cluster…Oracle Restart…) mit demselben oder einem neueren RU installiert und läuft.…
- Die Primary-Datenbank ist Enterprise Edition. Data Guard ist in der EE enthalten; die Standby während laufendem Apply geöffnet (read only) zu nutzen, erfordert eine Active-Data-Guard-Lizenz.
- Auf allen Servern sind im Profil des Benutzers oracle ORACLE_HOME=…, ORACLE_SID und PATH gesetzt (…auf den Primary-Nodes …1, …2 ……auf der Primary ……; das Standby-Profil wird in diesem Guide geschrieben).… Auf der Seite mit Grid sind im Profil des Benutzers grid ORACLE_HOME=… und ORACLE_SID=+ASM… (bei RAC +ASM1, +ASM2 …)… gesetzt; asmcmd und lsnrctl laufen mit diesem Profil.…
- Alle Server lösen sich gegenseitig per Namen auf (DNS oder /etc/hosts)…; die SCAN-Namen (…………, …………) werden im DNS auf 3 Adressen aufgelöst… und …/tcp ist in beide Richtungen offen. Die Netzwerkbandbreite trägt die erzeugte Redo-Menge…; für SYNC liegt die Roundtrip-Latenz möglichst unter 1–2 ms….
- Auf der Standby sind ASM-Diskgroups mit denselben Namen wie auf der Primary (…, …) gemountet und haben genügend freien Platz.
- Clusterware/Oracle Restart ist auf der Standby in Ordnung…; alle Standby-Nodes sind im Cluster (olsnodes)….
- Auf der Primary ist der Redo-Thread jeder Instanz aktiviert (v$thread ENABLED = PUBLIC), und alle Threads haben dieselbe Anzahl und Größe an Online-Redo-Gruppen.
- Die Standby hat so viel Plattenplatz wie die Primary für Datendateien, FRA (… GB) und Archive Logs.
- Die Uhren sind per NTP/chrony synchronisiert; die Zeitzonen sind identisch.
- Auf der Primary gibt es eine Passwortdatei (REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE), und das SYS-Passwort ist bekannt. Das Passwort darf kein @, /, " und keine Leerzeichen enthalten (das stört die Connect-Strings von RMAN/DGMGRL).
- Ist die Primary nicht im ARCHIVELOG-Modus, ist ein Neustart nötig… (alle Instanzen werden heruntergefahren)…; ein Wartungsfenster dafür ist genehmigt. Es gibt ein aktuelles RMAN-Backup der Primary.
- Auf dem Observer-Server ist Oracle Client (Installationstyp Administrator, enthält dgmgrl und mkstore) oder die Database-Software installiert; er erreicht Primary und Standby über …/tcp.
Phasen der Anleitung
- Vorabprüfung — Aktuellen Zustand der Primary prüfen
- Vorbereitung der Primary — FRA definieren (falls nicht vorhanden) · ARCHIVELOG-Modus aktivieren (falls nötig) · Force Logging und Flashback Database aktivieren · Data-Guard-Parameter setzen · Standby Redo Logs anlegen · Passwortdatei prüfen
- Oracle Net (tnsnames, statischer Listener) — tnsnames.ora-Einträge hinzufügen (Primary…, jeder Node…) · Statische Listener-Registrierungen hinzufügen (Primary) · Statische Listener-Registrierung hinzufügen (Primary-Node …: …) · Listener-Port in der Firewall öffnen… (alle Nodes)…
- Vorbereitung des Standby-Servers — Verzeichnisliste auf der Primary erstellen und an die Standby senden · Passwortdatei auf die Standby kopieren · Passwortdatei auf die Standby kopieren (aus der Clusterware-Registrierung) · oratab und Umgebungsdatei vorbereiten (Standby) · oratab und Umgebungsdatei vorbereiten (Standby-Node …: …) · Verzeichnisse anlegen (Standby…, jeder Node…) …
- Standby erstellen (RMAN DUPLICATE) und Redo Apply — Standby erstellen: RMAN DUPLICATE FROM ACTIVE DATABASE · Zustand der Standby prüfen · Standby Redo Logs anlegen, falls nicht vorhanden (Standby) · Temporäre pfile entfernen (Standby) · RAC-Standby: Cluster-Parameter in die spfile schreiben · RAC-Standby: spfile und Passwortdatei nach ASM verschieben …
- Data Guard Broker und Schutzmodus — Broker-Konfigurationsdateien an einen gemeinsamen Speicherort verlegen (Primary RAC) · Broker starten (Primary) · Broker-Konfigurationsdateien an einen gemeinsamen Speicherort verlegen (Standby RAC) · Broker starten (Standby) · Broker-Konfiguration anlegen · Apply-Instanz festlegen (RAC-Standby) …
- Switchover-Test — Switchover-Test: Standby zur Primary machen · Zustand nach dem Switchover prüfen · Switchback: ursprüngliche Rollen wiederherstellen
- Flashback auf der Standby — Flashback Database auf der Standby aktivieren
- Failover- und Reinstate-Test — Failover-Test 1/4: Absturz der Primary simulieren · Failover-Test 2/4: Failover auf die Standby · Failover-Test 3/4: alte Primary in MOUNT starten · Failover-Test 4/4: alte Primary als Standby wieder einbinden (REINSTATE) · Ursprüngliche Rollen nach dem Failover wiederherstellen
- Fast-Start Failover und Observer — tnsnames.ora schreiben (Observer) · Wallet für den Observer anlegen · Wallet in der sqlnet.ora eintragen (Observer) · Verbindung mit dem Wallet testen (Observer) · Fast-Start-Failover-Eigenschaften setzen · Startskript für den Observer schreiben (Observer) …
- Nach der Installation — Löschrichtlinie für Archive Logs setzen (Primary) · Löschrichtlinie für Archive Logs setzen (Standby) · Skript zum Aufräumen der Archive Logs schreiben (Standby…, jeder Node…) · Skript manuell mit der cron-Umgebung testen (Standby…, jeder Node…) · cron-Job einrichten (Standby…, jeder Node…) · Rechte der cron-Datei prüfen …