RAC unterstütuzt die folgenden Loadbalancing-Mechanismen:
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) ) ) )
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
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: