Immer wieder tauschen sich Datenbankadministratoren über komplexe Themen zum Beispiel in Sachen Konfiguration und Administration aus. Werden sie wider Erwarten mit Basics konfrontiert, dann heißt es gelegentlich: „Wie ging das nochmal?“ Gelerntes zu vergessen ist nicht nur ärgerlich, es ist auch noch Zeitverschwendung. Damit es in Zukunft nicht mehr passiert, stellt DOAG Online nützliche Spickzettel zur Verfügung. Heute geht es um die Basics der RAC-Administration.
Natürlich handelt es sich in dem folgenden Beispiel nur um eine Alternative unter vielen. Diese haben sich jedoch in der Praxis bewährt. Es sei im Vorfeld auch noch darauf hingewiesen, dass für die Verwendung von SRVCTL das entsprechende ORACLE_HOME gesetzt werden muss. Und schon kann es mit unserem kleinen Szenario losgehen:
Überblick verschaffen
Nehmen wir folgende Situation an: Wir haben es mit einer RAC-Umgebung mit zwei Knoten zu tun, auf der drei Datenbanken laufen: Produktions- (PROD), Test- (TEST) und Entwicklungsdatenbank (ENTWICKLUNG). Wir interessieren uns für die Datenbank TEST. Mit folgendem Befehl erhalten wir bereits einen guten Überblick über die Konfiguration der Test-Datenbank:
| > srvctl config database -d test |
Listing 1
So erfahren wir, wo Oracle-Home-Verzeichnis und Server-Parameter-File (Spfile) liegen. Darüber hinaus erlangen wir Kenntnis von zwei Instanzen TEST1 und TEST2. Für diese Datenbank werden zudem zwei Diskgroups verwendet, die sich U01/U02 nennen und schlussendlich bekommen wir die Bestätigung, dass es sich wirklich um eine RAC-Umgebung handelt. Die dargestellten Informationen werden aus dem OCR (Oracle Cluster Registry) gelesen und sehen so aus:
| Database unique name: TEST Database name: TEST Oracle home: /u00/app/oracle/product/11.2.0.3 Oracle user: oracle Spfile: +U01/TEST/spfileTEST.ora Domain: mydomain.net Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: TEST Database instances: TEST1,TEST2 Disk Groups: U01,U02 Mount point paths: Services: TEST_SERVICE Type: RAC Database is administrator managed |
Listing 2
Braucht jemand den aktuellen Status der Instanzen sowie die Node-Names, auf denen sie laufen, so ist folgender Befehl zu verwenden:
| > srvctl status database -d test |
Listing 3
| Instance TEST1 is running on node server1 Instance TEST2 is running on node server2 |
Listing 4
Services Informationen
Den Namen und Status der Services erfragt man am einfachsten mit:
| > srvctl status service -d test |
Listing 5
| Service TEST_SERVICE is running on instance(s) TEST1,TEST2 |
Listing 6
Hier erkennen wir, dass es einen Service mit dem Namen TEST_SERVICE gibt, der auf den Instanzen TEST1 und TEST2 läuft.
Stoppen und starten einer Instanz
Zu Wartungszwecken kann es zum Beispiel notwendig sein, die Instanz einer Datenbank zu stoppen. Auch dies geht ganz einfach mit Hilfe des SRVCTL-Commands.
| > srvctl stop database -d test |
Listing 7
Hinweis - Stop-Options: Immediate Wenn Sie sich richtig erinnern, stand im Listing 2 „Immediate“ als Stop-Options. Das Shutdown immediate bedeutet, dass neue Verbindungen abgewiesen werden, alle offenen Transaktionen zurückgerollt und die Datenbank geschlossen wird. Will man jedoch, dass die offenen Transaktionen abgeschlossen werden, ist die Datenbank mit Transactional herunterzufahren. Bei einem Shutdown Abort werden alle Prozesse sofort beendet. Die Datenbank ist in einem inkonsistenten Zustand und ein Crash Recovery ist beim nächsten Start notwendig. Diese und auch weitere Optionen können beim Stoppen der Datenbank mit SRVCTL mitangegeben werden. Hier ein Beispiel dafür: srvctl stop database -d test -o transactional |
| > srvctl stop instance -d test -i test1 |
Listing 8
Mit diesem Befehl wird nur die Instanz TEST1 heruntergefahren und kann dann mit folgendem Command wieder hochgefahren werden:
| > srvctl start instance -d test -i test1 |
Listing 9
Stoppen und starten einer Datenbank
Zum Stoppen der kompletten Datenbank TEST – das heißt in diesem konkreten Fall der Instanzen TEST1 und TEST2 – müssen die Instanzen nicht einzeln heruntergefahren werden. Der Vorgang kann mit einem einzigen Befehl erledigt werden. Das gilt im Übrigen auch für das Hochfahren der Datenbank.
| > srvctl stop database -d test |
Listing 10: So stoppen Sie die Datenbank
| > srvctl start database -d test |
Listing 11: So starten Sie die Datenbank


