Die Verbindung zu einer Oracle®-Datenbank wird über einen sogenannten „Service“ aufgebaut. In einer Oracle® Real Application Clusters-Umgebung können Sie zusätzlich "DTP services" einrichten.
Daraus ergeben sich für den laufenden Betrieb folgende Möglichkeiten:
- automatische Fehlererkennung
- automatisches Failover.
Nach Ausfall einer Instanz wird eine neue Transaktion auf eine andere Instanz des „service“ umgeleitet. Es muss nicht administrativ eingegriffen werden. - Lastverteilung bereits beim Verbindungsaufbau
DTP service anlegen (Oracle ® )
Richten Sie mit dem Kommando “srvctl add service“ einen neuen "service" für die Datenbank ein und ordnen Sie ihn einer Instanz der Datenbank zu.
Beispiel:
Für die RAC-Datenbank
dbracutmmit den Instanzenracutm1undracutm2sollen zwei "DTP services" mit folgenden Optionen angelegt werden:-d
Name der Datenbank
-s
Name des (DTP-)Services
-r
Name der Erst-Instanz
-a
Name der Zweit-Instanz
-P
Methode des Failovers
"srvctl add service -d dbracutm -s racutmS12 -r racutm1 -a racutm2 -P BASIC"und
"srvctl add service -d dbracutm -s racutmS21 -r racutm2 -a racutm1 -P BASIC"Der Service
racutmS12verbindet sich mit der Instanzracutm1und im Failover-Fall mit Instanzracutm2. Umgekehrt verbindet sich ServiceracutmS21mit der Instanzracutm2und im Failover-Fall mit Instanzracutm1.Wandeln Sie mit SQLPLUS die Services in "DTP services“ um:
SQL> connect .... SQL> execute dbms_service.modify_service ( service_name => 'racutmS12', dtp => true ); SQL> execute dbms_service.modify_service ( service_name => 'racutmS21', dtp => true ); SQL> exitSie können die (DTP-)Services mit "srvctl-Kommandos" starten, stoppen und administrieren, siehe auch Oracle®-Handbuch "Administration and Deployment Guide".
Der DTP-Service muss auf dem Knoten gestartet werden, auf dem die ihm primär zugewiesene Instanz des RAC-DB-Systems läuft, d.h. der DTP-ServiceracutmS21, der primär der Instanzracutm2zugeordnet ist, muss auf dem Knoten gestartet werden, auf dem diese Instanz läuft.- Tragen Sie den "service" in der Datei tnsnames.ora mit einem net_service_name ein:
Beispiel
RACUTMS1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST=server1) (PORT=1521)) (ADDRESS = (PROTOCOL = TCP) (HOST=server2) (PORT=1521)) ) (CONNECT_DATA = (SERVICE_NAME = racutmS12.domain_name ) ) (FAIL_OVER = ON) ) Weisen Sie in den Startparametern im Open-String dem Operanden "SqlNet" diesen net_service_name (hier RACUTMS1) zu.