Neue Anwendungsmöglichkeiten für Standby Datenbanken: Snapshot Standby -
Data Guard kann mehr als "nur" HA
von Ralf Durben, ORACLE Deutschland B.V. & Co. KG
Standby Datenbanken werden normalerweise im Zusammenhang mit Hochverfügbarkeit und Disaster Recovery gesehen: Im Falle eines gravierenden Fehlers auf der Seite der Produktionsdatenbank soll die Standby-Datenbank die Arbeit möglichst schnell übernehmen. Das Konzept von Standby-Datenbanken kann aber viel mehr und Oracle hat sich mit diesem Thema in zwei ausgesprochen interessanten Funktionsbereichen beschäftigt. In diesem Tipp wird einer dieser Funktionsbereiche beleuchtet: Die Snapshot Standby-Datenbank.
Konzept von Standby-DatenbankenDas Konzept ist eigentlich schon recht alt und wurde bereits in Oracle7 Datenbanken praktiziert: Von einer Produktivdatenbank wird ein Backup erstellt und auf einem anderen Rechner (Standby-Rechner) wieder eingespielt. Die Produktivdatenbank erzeugt Archive Redo Log Dateien (Archivelog-Mode ist Voraussetzung) und schickt diese an den Standby-Rechner. Die Standby-Datenbank läuft im Stadium MOUNT und spielt per Recovery die eintreffenden Archive Redo Log Dateien ein.Auf diese Weise entsteht eine Standby-Datenbank, die zur Produktivdatenbank identisch ist, jedoch zeitlich ein wenig hinterherläuft. Im Falle eines Fehlers müssen alle noch nicht eingespielten Redo Log Informationen irgendwie zum Standby-Rechner gelangen und dort per Recovery eingespielt werden. Erst danach kann die Standby-Datenbank geöffnet und zur Benutzung durch die Anwendungen und Benutzer freigegeben werden. Die Anwendungen und Benutzer müssen sich dabei natürlich wieder neu anmelden. So einfach sich das Konzept anhört, so knifflig sind natürlich die Details. Es gibt also bei dem oben beschriebenen Konzept verschiedene Herausforderungen. Diese werden alle mit dem mächtigen Feature-Paket "Data Guard" gelöst, welches Bestandteil der Enterprise Edition der Oracle Datenbank ist (Achtung: Es fallen Zusatzkosten in Form der Lizenz für die Standby-Datenbank an, da alle Datenbanken in einem Standby-Umfeld lizenziert sein müssen). Auch Standard Edition Datenbanken können mit einer Standby-Lösung betrieben werden, wobei alle Herausforderungen eigenhändig gelöst werden müssen. Die wesentlichen Herausforderungen sind:
Wozu könnten Standby Datenbank noch eingesetzt werden?Das Konzept von Standby Datenbanken kann über das Thema Hochverfügbarkeit und Disaster Recovery hinaus entwickelt werden. Schließlich ist nach dem oben beschriebenen Konzept die Standby Datenbank eine 100%ige Kopie der Produktivdatenbank, die aber dummerweise als Datenbank nicht geöffnet ist und damit nicht für Anwendungen zur Verfügung steht. Es gibt zum Beispiel folgende Anwendungsmöglichkeiten:
Was ist eine Snapshot Standby Datenbank?Eine Snapshot Standby Datenbank ist eine geöffnete Standby Datenbank, mit der alle Aktionen durchgeführt werden können, wie mit jeder anderen Datenbank auch. Es sind also sowohl Lese- als auch Schreiboperationen erlaubt. Während die Snapshot Standby Datenbank geöffnet ist, ist der Recovery Vorgang unterbrochen. Durch Schreiboperationen kann sich der Zustand auch stark von der Produktivdatenbank entfernen.Den geöffneten Zustand der Standby Datenbank können Sie nun für verschiedene Zwecke nutzen und damit alle oben beschriebenen Anwendungsmöglichkeiten realisieren. Wenn dieses abgeschlossen ist, kann die Snapshot Standby Datenbank wieder mit der Produktivdatenbank synchronisiert werden. Dazu verwendet Oracle die Flashback Database Technologie. Die Snapshot Standby Datenbank wird also zunächst wieder zu dem Zeitpunkt zurückgesetzt, zu dem sie geöffnet wurde (dazu wird beim öffnen der Datenbank ein RESTORE-Point erstellt, zu dem die Datenbank jetzt wieder zurückgesetzt wird). Dann werden alle Recovery Aktionen, die ja durch das öffnen der Snapshot Standby Datenbank ausgesetzt wurden, nachgeholt. Die Länge des Zeitraums zu dem die Snapshot Standby Datenbank geöffnet war, bestimmt nun die Dauer der Synchronisation. Die Produktivdatenbank ist in keinster Weise betroffen, es gibt also hier keinen Overhead.. Ein Lizenzhinweis: Die Funktionalität der Snapshot Standby Datenbank ist in der Lizenz einer Oracle Datenbank Enterprise Edition enthalten. Wie bei allen Standby Lösungen muss jede Datenbank selbst lizenziert sein, also auch alle Standby Datenbanken. Welche Voraussetzungen sind für eine Snapshot Standby Datenbank erforderlich?Sie benötigen
Wie wird eine Standby Datenbank zur Snapshot Standby Datenbank und umgekehrt?Im laufenden Betrieb einer Data Guard Standby Konfiguration können Sie eine physikalische Standby Datenbank in eine Snapshot Standby Datenbank konvertieren mitIn SQL*Plus: SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY; In Data Guard Manager Command Line Utility DGMGRL: DGMGRL> CONVERT DATABASE stby TO SNAPSHOT STANDBY; In Grid Control: Auswählen der Standby Datenbank und klick auf den Button "Convert"Die Standby Datenbank ist nach Abschluß dieses Kommandos geöffnet und kann benutzt werden. Nach Abschluss der Aktionen kann Sie wieder zur Standby Datenbank zurückgesetzt werden mit In SQL*Plus (Achtung: Datenbank muss im MOUNT-Stadium sein): SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY; In Data Guard Manager Command Line Utility DGMGRL: DGMGRL> CONVERT DATABASE stby TO PHYSICAL STANDBY; In Grid Control: Auswählen der Standby Datenbank und klick auf den Button "Convert"Der Screenshot zeigt die Administration in Grid Control: BeispielIn dem folgenden Beispiel wurde die physikalische Standby Datenbank schon angelegt. Sie befindet sich im normalen Standby-Betriebszustand, also im MOUNT-Stadium mit Redo Log Apply.$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 17 11:03:49 2011 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning and Real Application Testing options SQL> SELECT STATUS FROM v$instance; STATUS ------------ MOUNTEDIm Beispiel soll das Umschalten mit DGMGRL gezeigt werden. Dazu wird diese Utility gestartet mit $ dgmgrl DGMGRL for Linux: Version 11.2.0.1.0 - Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. DGMGRL> connect sys/password@OE Connected.Den aktuellen Status der Data Guard Konfiguration sieht man mit DGMGRL> show configuration Configuration - OE Protection Mode: MaxAvailability Databases: OE - Primary database OE1 - Physical standby database OE2 - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESSDie Standby Datenbank befindet sich auch im Stadium MOUNT SQL> SELECT STATUS FROM v$instance; STATUS ------------ MOUNTEDJetzt wird die Standby Datenbank konvertiert mit DGMGRL> CONVERT DATABASE "OE2" TO SNAPSHOT STANDBY; Converting database "OE2" to a Snapshot Standby database, please wait... Database "OE2" converted successfullyDie Datenbank ist jetzt geöffnet, wie man sieht mit SQL> SELECT STATUS FROM v$instance; STATUS ------------ OPENDie Data Guard Konfiguration hat sich jetzt auch geändert: DGMGRL> show configuration Configuration - OE Protection Mode: MaxAvailability Databases: OE - Primary database OE1 - Physical standby database OE2 - Snapshot standby database Fast-Start Failover: DISABLEDAuch den intern gesetzten Restore Point kann man sehen mit SQL> SELECT scn,name,time FROM v$restore_point; SCN NAME TIME ---------- --------------------------------------------- ------------------------------- 32357405 SNAPSHOT_STANDBY_REQUIRED_03/17/2011 11:44:37 17-MAR-11 11.44.37.000000000 AMJetzt können ganz normale Aktionen in der Datenbank durchgeführt werden, wie in diesem Beispiel: SQL> select * from scott.dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> delete from scott.dept; 4 rows deleted. SQL> commit; Commit complete.Jetzt kann die Snapshot Standby Datenbank wieder zur normalen Physical Standby Datenbank konvertiert werden mit DGMGRL> CONVERT DATABASE "OE2" TO PHYSICAL STANDBY; Converting database "OE2" to a Physical Standby database, please wait... Operation requires shutdown of instance "OE2" on database "OE2" Shutting down instance "OE2"... Database closed. Database dismounted. ORACLE instance shut down. Operation requires startup of instance "OE2" on database "OE2" Starting instance "OE2"... ORACLE instance started. Database mounted. Continuing to convert database "OE2" ... Operation requires shutdown of instance "OE2" on database "OE2" Shutting down instance "OE2"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "OE2" on database "OE2" Starting instance "OE2"... ORACLE instance started. Database mounted. Database "OE2" converted successfully FazitMit der Snapshot Standby Datenbank eröffnen sich neue Einsatzmöglichkeiten von Standby Datenbanken. Sie können damit Testsysteme erstellen oder Testdaten erzeugen. Sie können die Lese-Last durch Reporting, ETL-Prozesse oder zum Erstellen von Backups aus der Produktivdatenbank herausnehmen und dadurch die Performance der Produktivdatenbank steigern bzw. stabilisieren. Damit ist der Einsatz von Data Guard nicht nur für Hochverfügbarkeitsanforderungen interessant.Die Snapshot Standby Datenbank ist in jeder Lizenz der Oracle Datenbank Enterprise Edition enthalten, wobei neben der Produktiv- auch alle Standby-Datenbanken lizenziert sein müssen. |