Zum Inhalt springen
  • Von: Klaus Popp
  • Datenbank
  • 20.06.2013

SPICKZETTEL: Kleine Befehlssammlung für den Alltag - Die Basics der RAC-Administration

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.

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