Als PDF Downloaden!

Werbung
Tipps & Tricks: März 2011
Bereich:
RAC
Erstellung:
03/2011 SH
Versionsinfo:
11.2
Letzte Überarbeitung:
03/2011 SH
Parameter der tnsnames.ora im RAC Umfeld
Wird Oracle Real Application Clusters (RAC) eingesetzt müssen mehrere Aspekte beachtet werden. Unter
anderem die Konfiguration der tnsnames.ora Datei (Client-Seite). Sie kann ab der Version 11g R2 einen
geringfügig veränderten Aufbau haben, da in 11g R2 das Konzept des Single Client Access Name (SCAN)
eingeführt wurde.
Wir vergleichen hier die verschiedenen Verbindungsmöglichkeiten zusammen mit ihren Parametern und deren
Auswirkungen. Ein besonderes Augenmerk legen wir dabei auf den Transparent Application Failover (TAF).
Die tnsnames.ora Datei einer Client-Anwendung könnte bei einem RAC mit zwei Knoten (rac1a und rac1b) und
dem alten Zugriffskonzept der virtuellen IP Adressen (VIP) wie folgt aussehen:
rac1 =
(DESCRIPTION =
(ADDRESS_LIST = (LOAD_BALANCE=ON)(FAILOVER=ON)
(ADDRESS = (PROTOCOL = TCP)
(HOST = rac1a-vip.muniqsoft.de)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)
(HOST = rac1b-vip.muniqsoft.de)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(FAILOVER_MODE =
(TYPE=SESSION)
(METHOD
1. Parameter:
Die Optionen LOAD_BALANCE und FAILOVER beziehen sich ausschließlich auf den Verbindungsaufbau.
LOAD_BALANCE
Sorgt dafür, dass die Hosts in der Adress-Liste in einer zufälligen Reihenfolge angesprochen werden. Dadurch
wird die Last gleichmäßig auf die Knoten verteilt.
FAILOVER
Sorgt dafür, dass beim Scheitern eines Verbindungsaufbaus der nächste Host in der Adress-Liste genommen
wird.
Die Optionen TYPE und METHOD beziehen sich widerum nur auf das Verhalten eines Verbindungsverlustes zur
Laufzeit. Diese Art des Failovers wird auch Transparent Application Failover (TAF) genannt.
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 1 von 7
TYPE
Gibt die Art des Failovers an. Es gibt drei verschiedene Möglichkeiten:
TYPE=SESSION
Geht die Verbindung zur Datenbank verloren wird automatisch eine neue Session zu dem anderen
angegebenen Knoten aufgebaut. Alle offenen Cursor gehen dabei verloren.
TYPE=SELECT
Geht die Verbindung zur Datenbank verloren wird automatisch eine neue Session zu dem anderen
angegebenen Knoten aufgebaut. Offene Cursor können in der neuen Session weiter abgerufen werden.
(Continue Cursor Fetching)
TYPE=none
Wenn das Feld leer gelassen wird findet kein Failover statt. Dies ist der Default-Wert und kann unter
anderem explizit dazu verwendet werden einen Failover zu verhindern.
METHOD
Gibt an, wie schnell ein Failover stattfindet.
METHOD=BASIC
Baut zum Zeitpunkt des Verbindungsproblems eine Verbindung zum Backup-Knoten auf. Dies benötigt
fast keine Ressourcen auf den Backup-Knoten.
METHOD=PRECONNECT
Baut schon beim normalen Verbinden eine zweite Backup-Verbindung mit auf. Der Failover ist zwar
schneller, benötigt jedoch auf dem Backup-Knoten zusätzliche Ressourcen.
Des Weiteren gibt es noch die Optionen RETRIES und DELAY, welche hier nur wegen der Vollständigkeit kurz
beschrieben werden.
[...]
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(FAILOVER_MODE =
(TYPE=SESSION)
(METHOD=BASIC)
(RETRIES=5)
(DELAY=10)
)
RETRIES
Gibt die Anzahl der Versuche an, sich erneut zu verbinden. Wenn RETRIES definiert ist wird DELAY automatisch
auf 1 Sekunde gesetzt.
DELAY
Gibt die Anzahl der Sekunden an, die gewartet werden sollen, um sich erneut zu verbinden. Wenn DELAY
aktiviert ist wird automatisch der RETRIES-Wert auf 5 gesetzt.
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 2 von 7
2. Testaufbau:
Ziel:
Wir testen drei verschiedene Verbindungsarten (Computername, VIP, SCAN) mit jeweils allen Kombinationen der
Optionen TYPE und METHOD.
Szenario:
In unserem Beispiel betreiben wir ein RAC (11g R2) mit zwei Knoten.
Wir verwenden dazu zwei VMs (Virtuelle Maschinen):
rac1a.muniqsoft.de und rac1b.muniqsoft.de
Alle Tests werden mit SQL*Plus durchgeführt.
Ablauf:
1. SQL*Plus öffnen und als "sys" anmelden.
SQL> conn sys/sys @rac1 as sysdba
Connected.
2. Überprüfen mit welchem Knoten man verbunden ist.
SQL> select host_name from v$instance;
HOST_NAME
---------------------------------------------------------------rac1a
3. Einen Select-Befehl absetzen, der einige Zeit in Anspruch nimmt.
Dieser Befehl liefert ca. 580.000 Zeilen zurück:
SQL> select * from dba_source;
4. Während der Select läuft fahren wir die VM, mit der wir gerade verbunden sind, herunter.
5. Nun beobachten wir, wie sich die Ausgabe des noch laufenden Select-Befehls verhält.
3. Auswertung:
Fall 1:
Als HOST-Adressen wurden die Computernamen angegeben.
Unser Beispiel sieht wie folgt aus:
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 3 von 7
rac1 =
(DESCRIPTION =
(ADDRESS_LIST = (LOAD_BALANCE=ON)(FAILOVER=ON)
(ADDRESS = (PROTOCOL = TCP)
(HOST = rac1a.muniqsoft.de)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)
(HOST = rac1b.muniqsoft.de)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(FAILOVER_MODE =
(TYPE=SESSION)
(METHOD=BASIC)
)
)
)
Fall TYPE
METHOD
Ergebnis
1
SESSION BASIC
Der Select bricht ab. Client ist nach kurzer Zeit mit dem zweiten Knoten
verbunden. Select muss neu abgesetzt werden.
2
SESSION PRECONNECT
Der Select bricht ab. Client ist sofort mit dem zweiten Knoten verbunden.
Select muss neu abgesetzt werden.
3
SELECT BASIC
Der Select unterbricht kurz und läuft dann weiter.
4
SELECT PRECONNECT Der Select unterbricht kurz und läuft dann weiter.
5
NONE
BASIC /
Der Select bricht ab. Client muss sich manuell reconnecten und den Befehl
PRECONNECT erneut ausführen.
Ein Reconnect dauert hier sehr lange (ca. 30 Sekunden), wenn der erste angegebene Knoten ausfällt. Das liegt
daran, dass so lange auf eine Antwort der angesprochenen IP gewartet wird bis ein Timeout erfolgt. Erst danach
wird versucht sich mit dem zweiten Knoten zu verbinden.
Fall 2:
Als HOST-Adressen wurden die VIP-Adressen der Knoten angegeben.
Eine Virtuelle IP Adresse (VIP) ist, im Gegensatz zur normalen IP, nicht an einen Knoten gebunden. Sie kann
automatisch auf einen anderen Knoten umziehen.
Ist beispielsweise ein Knoten nicht mehr erreichbar, so wird die VIP auf einen noch erreichbaren Knoten
umgezogen. Somit bleibt die vom Client angesprochene VIP bis auf eine kurze Unterbrechung immer erreichbar.
Unser Beispiel sieht wie folgt aus:
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 4 von 7
rac1 =
(DESCRIPTION =
(ADDRESS_LIST = (LOAD_BALANCE=ON)(FAILOVER=ON)
(ADDRESS = (PROTOCOL = TCP)
(HOST = rac1a-vip.muniqsoft.de)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)
(HOST = rac1b-vip.muniqsoft.de)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(FAILOVER_MODE =
(TYPE=SESSION)
(METHOD=BASIC)
)
)
)
Fall TYPE
METHOD
Ergebnis
1
SESSION BASIC
Der Select bricht ab. Client ist nach kurzer Zeit mit dem zweiten Knoten
verbunden. Select muss neu abgesetzt werden.
2
SESSION PRECONNECT
Der Select bricht ab. Client ist sofort mit dem zweiten Knoten verbunden.
Select muss neu abgesetzt werden.
3
SELECT BASIC
Der Select unterbricht kurz und läuft dann weiter.
4
SELECT PRECONNECT Der Select unterbricht kurz und läuft dann weiter.
5
NONE
BASIC /
Der Select bricht ab. Client muss sich manuell reconnecten und den Befehl
PRECONNECT erneut ausführen.
Ein Reconnect benötigt in diesem Fall nur noch ca. 1-3 Sekunden.
Fall 3:
Als HOST-Adresse wurde die SCAN-Adresse angegeben.
Eine SCAN-Adresse ist ein Eintrag im DNS-Server, der bis zu drei verschiedene IP Adressen auflösen kann.
Somit spricht ein Client automatisch max. drei Knoten an.
Da wir in unserem Szenario nur zwei Knoten betreiben wird ein Knoten auf zwei IP Adressen erreichbar sein. Die
Parameter FAILOVER und LOAD_BALANCE werden hier nicht benötigt, da diese nur zum Einsatz kommen, wenn
mehrere Host-Adressen angegeben sind.
Unser Beispiel sieht wie folgt aus:
rac1 =
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 5 von 7
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)
(HOST = rac1-scan.muniqsoft.de)(PORT = 1521)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(FAILOVER_MODE =
(TYPE=SESSION)
(METHOD=BASIC)
)
)
)
Fall TYPE
METHOD
Ergebnis
1
SESSION BASIC
Der Select unterbricht kurz und läuft dann weiter.
2
SESSION PRECONNECT
Der Select bricht ab. Client ist sofort mit dem zweiten Knoten verbunden.
Select muss neu abgesetzt werden.
3
SELECT BASIC
Der Select unterbricht kurz und läuft dann weiter.
4
SELECT PRECONNECT Der Select unterbricht kurz und läuft dann weiter.
5
NONE
BASIC /
Der Select bricht ab. Client muss sich manuell reconnecten und den
PRECONNECT Befehl erneut ausführen.
In unseren Tests kam es einmal vor, dass der Select im Fall 4 mit der Fehlermeldung "ORA-25401: can not
continue fetches" abbrach. Alle weiteren Versuche lieferten dann das Ergebnis wie in der Tabelle beschrieben.
4. Anmerkung / Fazit:
Da wir alles mit SQL*Plus getestet haben, bleibt noch anzumerken, dass es durchaus sein kann, dass sich ein
anderer Client etwas anders verhält. Insbesondere gibt es Unterschiede beim "fetchen" des offenen Cursors.
Trotzdem kann man in den Tabellen erkennen welche Parameter welches Verhalten an den Tag legen. In den
Varianten Computername und VIP waren jedoch die Parameter TYPE=SELECT und METHOD=PRECONNECT am
zuverlässigsten. Lediglich bei Verwendung der SCAN-Adresse gab es mit diesen Parametern einmal Probleme.
Des Weiteren muss man beachten, dass METHOD=PRECONNECT immer auch Ressourcen auf dem passiven
Knoten nutzt.
Das neue Feature der SCAN Adresse hat den Vorteil, dass die tnsnames.ora Datei (Clientseite) nicht geändert
werden muss, wenn das RAC z. B. um einen Knoten erweitert wird. Die Änderungen erfolgen transparent für die
Clients an den SCAN-Listenern.
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 6 von 7
Wenn Sie mehr zu diesem Thema erfahren möchten, dann besuchen Sie unsere
RAC Schulungen im März oder Ende Juni.
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 7 von 7
Herunterladen