Inhaltsverzeichnis
Rund um SQL*Net und Real Application Cluster
Load Balancing
RAC unterstütuzt die folgenden Loadbalancing-Mechanismen:
- Client-side Loadbalancing
Die Verteilung erfolgt durch den Oracle Client ( z.b. tnsnames.ora). - Server-side Loadbalancing
Die Listener Prozesse der Knsoten tauschen regelmäßig Informationen aus und hängen die Verbindungen zum Client um. Die Konfiguration über die REMOTE_LISTENER Konfiguration.
Es ist eine Connection-Count (round-robin-Verteilung) oder workload-basiert Verteilung der Sessions möglich.
Client-side Loadbalancing
Wichtig ist die Verwendung der VIP Interface Namen, diese sollten sauber im Netz aufgelößt werden können!
Mit LOAD_BALANCE = yes wird SQL*Net angewiesen zufällig einen der Einträge in der ADDRESS_LIST zu verwenden.
Eintrag in TNSNames.ora:
MYDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = RACmydb1VIP)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = RACmydb12VIP)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = RACmydb13VIP)(PORT = 1521)) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVICE_NAME = opera) ) ) )
Server-side Loadbalancing
Die Listener kommunizieren mit Hilfe des Oracle PMON Prozesse untereinander über den Auslastungsgrad
Konfiguration:
vor 11gR2
Eintrag eines TNSAliases für die anderen Listener mit dem Parameter REMOTE_LISTENER in init.ora eine jeden DB Knotens
TNSNames Eintrag in der TNSNAmes im Oracle Home der Datenbank Instance auf jeden Knoten
ab 11gR2
Eintrag der SCAN Listener Adresse <name>:<port>
Wie ist die aktuelle Einstellung:
SELECT name ,TO_CHAR(creation_date, 'mm-dd-yyyy hh24:mi:ss') created_on ,goal AS SRV_Workload_Management_Goal ,clb_goal AS onnection_Load_Balancing_Goal ,aq_ha_notifications AS AQ_High_Availability_Notific FROM dba_services WHERE name NOT LIKE 'SYS%' ORDER BY name
Quelle siehe auch: http://www.databasejournal.com/features/oracle/article.php/3666396/Oracle-10gR2-RAC-Load-Balancing-Features.htm
Einen Knoten des Clusters aus dem Benutzerzugriff nehmen
Szenario: Ein Node der Datenbank soll neu gestartet werden. Die Anwender sollen sich in den Tagen zuvor nicht mehr an diesen Knoten anmelden, damit sowenig Störungen wie möglich durch bereits angemeldete Sessions entstehen.
Ablauf:
- Clients: Anpassen der TNSNames der Clients (Adresseintrag des Knotens löschen)
- DB Knoten: Remote Listener Eintrag auf dem Knoten, der neu gestartet werden soll, entfernen.
Damit wird der Knoten wird aus dem Load Balacing genommen.
mit „alter system set REMOTE_LISTENER='' scope=memory sid='node2';“ - Client: SQL*Plus Session ca. 20/30 mal starten um den Effekt zuprüfen!
- DB Knoten: Knoten vor dem Reboot mit „srvctl stop instance -d mydb -i node2“ stoppen
- Clients: Nach dem Reboot Client TNSNames wieder anpassen