high availability tests - oracle€¦ · testha.doc 5/26 3. arbeiten mit services 3.1 Überprüfen...
TRANSCRIPT
TestHA.doc 1/26
High Availability Tests
1. Umgebungsinformation ........................................................................................................ 2
2. Vorbereitungen...................................................................................................................... 3
2.1 Anlegen Datenbank Services mittels EM Console ...................................................... 3
2.2 Anlegen Schema scott/tiger ........................................................................................... 4
3. Arbeiten mit Services............................................................................................................. 5
3.1 Überprüfen der Services mit der EM Console ............................................................ 5
3.2 HA Services Component with and without TAF......................................................... 5
4. Benutzung von TAF (Transparent Application Failover) ................................................... 8
4.1 Read Modus : SELECT Reihenfolge............................................................................ 8
4.2 Transaktionsbehandlung: UPDATE Reihenfolge ....................................................... 9
5. Verwaltung von nicht-Oracle Applikationen im Cluster ................................................... 13
5.1 Vorbereitung................................................................................................................. 13
5.2 Registrierung und Starten der Applikation............................................................... 14
5.3 Starten der Client-Applikation ................................................................................... 15
5.4 Verwaltung der Komponenten.................................................................................... 16
5.5 Entfernen der Anwendung .......................................................................................... 18
6. Demonstration JDBC FCF (Fast Connection Failover) ................................................... 19
6.1 Testumgebung............................................................................................................... 19
6.2 Anlegen der Benutzer................................................................................................... 19
6.3 Anlegen eines Service für FCF.................................................................................... 19
6.4 Anpassung und Übersetzung Java Programme ........................................................ 20
6.5 Test ohne FCF............................................................................................................... 21
6.6 Test mit FCF ................................................................................................................. 23
TestHA.doc 2/26
1. Umgebungsinformation Es stehen für den Workshop jeweils 2-Knoten-Cluster zur Verfügung. Die Namen der Knoten setzen sich wie folgt zusammen : # = Nummer der Arbeitsgruppe
Knoten Name 1 hpws#rac1 2 hpws#rac2 Also zum Beispiel für Arbeitsgruppe 1: hpws1rac1 und hpws1rac2.
Die Verzeichnisstruktur ist folgendermaßen:
Directory Pfad ORACLE_BASE /opt/oracle ORACLE_HOME (Clusterware) /opt/crs ORACLE_HOME (Datenbank) /opt/oracle/product/db Als Benutzer sind auf Betriebssystemebene eingerichtet :
User Password root oracle oracle oracle Auf Datenbankebene sind folgende Benutzer angelegt:
User Password sys oracle system oracle sysman oracle alle anderen User oracle Zum Starten der Umgebung wird der Tight vncviewer verwendet, mit dem Sie sich auf den automatisch gestarteten vncserver auf den Clusterknoten verbinden und dort eine grafische Oberfläche starten, die für die Installation benötigt wird. Die Login-Informationen sind :
vncserver Password <Servername> :1 oracle
TestHA.doc 3/26
2. Vorbereitungen 2.1 Anlegen Datenbank Services mittels EM Console Starten Sie die EM Console in einem Browser über den während der Installation notierten Link (# durch Gruppennummer ersetzen): https://hpws#rac1.de.oracle.com:1158/em Melden Sie sich an als User system. Nach Erscheinen des Standardbildschirms klicken Sie auf das Register Verfügbarkeit, dann auf den Link Cluster-verwaltete Datenbank-Services. Im folgenden Bildschirm tragen Sie die Credentials für den OS-User oracle und den DB-User sys ein. Es erscheint eine Übersicht aller registrierten Services, die allerdings noch keine Einträge enthält. Die Services werden nun mittels Button Service erstellen angelegt. Erstellen Sie Services gemäß folgender Aufstellung:
Service-Name Instanz 1 Instanz 2 TAF-Policy hataf Bevorzugt Verfügbar Basis ha Bevorzugt Verfügbar Keine Setzen Sie die entsprechende Checkbox, damit die lokale tnsnames.ora aktualisiert wird. Wenn Sie bei der Installation nicht das Patch 11.1.0.7 installiert haben, so bekommen Sie beim Anlegen der Services keine Checkbox angeboten sondern müssen den folgende tnsnames.ora Einträge manuell (Hinweis: Bitte cut&paste aus pdf-Dokument nur über Windows-Editor und dabei überflüssige Leerzeichen entfernen!) vornehmen: hataf =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hpws#rac1v)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hpws#rac2v)(PORT = 1521))
(LOAD_BALANCE = YES)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hataf)
(FAILOVER_MODE =
(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5)
)
)
)
ha =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hpws#rac1v)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hpws#rac2v)(PORT = 1521))
(LOAD_BALANCE = YES)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ha)
)
)
TestHA.doc 4/26
Hinweis: Kontrollieren Sie bitte in jedem Fall Ihre tnsnames.ora! Wenn Sie die anschließenden Tests auf dem anderen Knoten durchführen wollen, so müssen Sie die anlegeten tnsnames.ora Einträge manuell auf den zweiten Knoten kopieren.
2.2 Anlegen Schema scott/tiger Starten Sie ein Terminal als User oracle und setzen Sie die Umgebung: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
Anschließend starten Sie SQL*plus, melden sich mit sysdba-Rechten an und starten das Skript $ORACLE_HOME/rdbms/admin/utlsampl.sql, um das Schema scott anzulegen: [oracle@hpws1rac1 ~]$ sqlplus /nolog
SQL*Plus: Release 11.1.0.7.0 - Production on Thu Sep 25 09:19:37 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> @$ORACLE_HOME/rdbms/admin/utlsampl.sql
[oracle@hpws1rac1 ~]$
TestHA.doc 5/26
3. Arbeiten mit Services 3.1 Überprüfen der Services mit der EM Console Starten Sie die EM Console in einem Browser über den während der Installation notierten Link (# durch Gruppennummer ersetzen): https://hpws#rac1.de.oracle.com:1158/em Melden Sie sich an als User system. Nach Erscheinen des Standardbildschirms klicken Sie auf das Register Verfügbarkeit, dann auf den Link Cluster-verwaltete Datenbank-Services. Hier sollten Sie die beiden oben angelegten Services sehen. Alternativ können Sie mit dem crs_stat Utility sämtliche Services prüfen: [oracle@hpws1rac1 ~]$ /opt/crs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....11.inst application ONLINE ONLINE hpws1rac1
ora....12.inst application ONLINE ONLINE hpws1rac2
ora.ws1.db application ONLINE ONLINE hpws1rac1
ora....S11.srv application ONLINE ONLINE hpws1rac2
ora.ws1.ha.cs application ONLINE ONLINE hpws1rac1
ora....S11.srv application ONLINE ONLINE hpws1rac2
ora....ataf.cs application ONLINE ONLINE hpws1rac1
ora....SM2.asm application ONLINE ONLINE hpws1rac1
ora....C1.lsnr application ONLINE ONLINE hpws1rac1
ora....ac1.gsd application ONLINE ONLINE hpws1rac1
ora....ac1.ons application ONLINE ONLINE hpws1rac1
ora....ac1.vip application ONLINE ONLINE hpws1rac1
ora....SM1.asm application ONLINE ONLINE hpws1rac2
ora....C2.lsnr application ONLINE ONLINE hpws1rac2
ora....ac2.gsd application ONLINE ONLINE hpws1rac2
ora....ac2.ons application ONLINE ONLINE hpws1rac2
ora....ac2.vip application ONLINE ONLINE hpws1rac2
3.2 HA Services Component with and without TAF Öffnen Sie als User oracle mehrere Fenster auf Ihrem Knoten 1 (z. B. hpws1rac1) und führen Sie folgende Operationen aus: Fenster 1 (Knoten 1): [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
[oracle@hpws1rac1 ~]$ sqlplus scott/tiger@hataf
SQL> select count(*) from emp;
TestHA.doc 6/26
Fenster 2 (Knoten 1): [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
[oracle@hpws1rac1 ~]$ sqlplus scott/tiger@ha
SQL> select count(*) from emp; Fenster 3 (Knoten 1): Prüfen Sie, dass die beiden Sessions auf Knoten 1 verbunden sind: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
[oracle@hpws1rac1 ~]$ cd /home/oracle/workshop
[oracle@hpws1rac1 workshop]$ sqlplus system/oracle@hataf
SQL> @sel_sess
SID USERNAM SERVICE INST_ID FAILOVER_METHOD FAILED_OVER
----- ------- ------- ---------- --------------- ---------------
111 SCOTT hataf 1 BASIC NO
112 SCOTT ha 1 NONE NO
SQL>
Fenster 4 (Knoten 1): Sie bringen Instanz 1 nun durch Abbruch des smon Prozesses (kill –9) zum Absturz: [oracle@hpws1rac1 ~]$ ps -efa |grep smon
oracle 18446 1 0 Sep24 ? 00:00:00 asm_smon_+ASM1
oracle 20372 20286 0 12:03 pts/2 00:00:00 grep smon
oracle 23667 1 0 11:23 ? 00:00:00 ora_smon_ws11
[oracle@hpws1rac1 ~]$ kill -9 23667
Prüfen Sie in Fenster 1, dass der Client nach wie vor verbunden ist: SQL> select count(*) from emp;
COUNT(*)
----------
14
Anschließend prüfen Sie den Client in Fenster 2 und verbinden Sie sich erneut: SQL> select count(*) from emp;
select count(*) from emp
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 6824
Session ID: 112 Serial number: 487
SQL> conn scott/tiger@ha
Connected.
TestHA.doc 7/26
SQL> select count(*) from emp;
COUNT(*)
----------
14
In Fenster 3 prüfen Sie die laufenden Sessions: SQL> @sel_sess
SID USERNAM SERVICE INST_ID FAILOVER_METHOD FAILED_OVER
----- ------- ------- ---------- --------------- ---------------
121 SCOTT ha 2 NONE NO
122 SCOTT hataf 2 BASIC YES
Sie sehen, dass der User scott nun mit Instanz 2 verbunden ist. Sie können prüfen, dass die Clusterware die Instanz automatisch auf Knoten 1 wiederhergestellt hat: [oracle@hpws1rac1 ~]$ /opt/crs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....SM2.asm application ONLINE ONLINE hpws1rac1
ora....C1.lsnr application ONLINE ONLINE hpws1rac1
ora....ac1.gsd application ONLINE ONLINE hpws1rac1
ora....ac1.ons application ONLINE ONLINE hpws1rac1
ora....ac1.vip application ONLINE ONLINE hpws1rac1
ora....SM1.asm application ONLINE ONLINE hpws1rac2
ora....C2.lsnr application ONLINE ONLINE hpws1rac2
ora....ac2.gsd application ONLINE ONLINE hpws1rac2
ora....ac2.ons application ONLINE ONLINE hpws1rac2
ora....ac2.vip application ONLINE ONLINE hpws1rac2
ora.ws1.db application ONLINE ONLINE hpws1rac1
ora.ws1.ha.cs application ONLINE ONLINE hpws1rac2
ora....s11.srv application ONLINE ONLINE hpws1rac1
ora....ataf.cs application ONLINE ONLINE hpws1rac2
ora....s11.srv application ONLINE ONLINE hpws1rac1
ora....11.inst application ONLINE ONLINE hpws1rac1
ora....12.inst application ONLINE ONLINE hpws1rac2
Nutzen Sie zum Abschluß die EM Console, um durch einen Restart der Services diese wieder auf die richtige Instanz zu verschieben.
TestHA.doc 8/26
4. Benutzung von TAF (Transparent Application Failover) In diesem Abschnitt wird eine neue Tabelle longrun benötigt, die Sie mit einem bereitstehenden Skript (/home/oracle/workshop/ha_install.sql) anlegen. Führen Sie dazu als User oracle die folgenden Schritte aus: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd workshop
[oracle@hpws1rac1 workshop]$ sqlplus scott/tiger
SQL*Plus: Release 11.1.0.7.0 - Production on Thu Sep 25 12:40:14 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> @ha_install 4.1 Read Modus : SELECT Reihenfolge In dieser Übung wird gezeigt, wie TAF (Transparent Application Failover) bei einem langlaufenden select-Statement in einer Applikation, die TAF-fähig ist (hier: SQL*plus), reagiert. Hierzu wird eine spezielle Sortierung verwendet, die ordnungsgemäß zum Ende kommt, auch wenn die Instanz, zu der Sie verbunden sind, abbricht. Fenster 1 (Knoten 1): [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd workshop
[oracle@hpws1rac1 workshop]$ sqlplus scott/tiger@hataf Fenster 2 (Knoten 1): Prüfen Sie, dass die Session von User scott auf Knoten 1 verbunden ist: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd workshop
[oracle@hpws1rac1 workshop]$ sqlplus system/oracle@hataf
SQL> @sel_sess
SID USERNAM SERVICE INST_ID FAILOVER_METHOD FAILED_OVER
----- ------- ------- ---------- --------------- ---------------
114 SCOTT hataf 1 BASIC NO
TestHA.doc 9/26
Fenster 3 (Knoten 1): Bereiten Sie das Kommando kill –9 vor, aber lassen es noch nicht laufen! [oracle@hpws1rac1 ~]$ ps -efa |grep smon
oracle 18446 1 0 Sep24 ? 00:00:00 asm_smon_+ASM1
oracle 22612 1 0 12:06 ? 00:00:00 ora_smon_ws11
oracle 29635 29163 0 13:01 pts/2 00:00:00 grep smon
[oracle@hpws1rac1 ~]$ kill -9 22612
Fenster 1 (Knoten 1): Führen Sie das langlaufende select-Statement aus, es läuft ca. 1 min: SQL> @ha1.sql
Fenster 3 (Knoten 1): Das vorbereitete Kommando kill –9 laufenlassen: [oracle@hpws1rac1 ~]$ kill -9 22612 Fenster 1 (Knoten 1): Beobachten Sie, wie das SELECT zum Ende kommt. Fenster 2 (Knoten 1): Überprüfen Sie, dass die Session von User scott automatisch auf den zweiten Knoten übertragen wurde (FAILED_OVER=YES), ohne die Abarbeitung des select-Statements zu behindern: SQL> @sel_sess
SID USERNAM SERVICE INST_ID FAILOVER_METHOD FAILED_OVER
----- ------- ------- ---------- --------------- ---------------
122 SCOTT hataf 2 BASIC YES Nutzen Sie zum Abschluß die EM Console, um durch einen Restart der Services diese wieder auf die richtige Instanz zu verschieben. 4.2 Transaktionsbehandlung: UPDATE Reihenfolge In diesem Beispiel sehen Sie Fehler, die in SQL*plus auftreten, wenn eine Instanz abbricht und das TAF während einer laufenden Aktion erfolgt. Auf diese Weise sehen Sie, welchen Fehlercode eine TAF-fähige Applikation abfangen sollte. Fenster 1 (Knoten 1): [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd workshop
[oracle@hpws1rac1 workshop]$ sqlplus scott/tiger@hataf
Fenster 2 (Knoten 1): Prüfen Sie die Session von User scott auf Knoten1:
TestHA.doc 10/26
[oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd workshop
[oracle@hpws1rac1 workshop]$ sqlplus system/oracle@hataf
SQL*Plus: Release 11.1.0.7.0 - Production on Thu Sep 25 14:02:02 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> @sel_sess
SID USERNAM SERVICE INST_ID FAILOVER_METHOD FAILED_OVER
----- ------- ------- ---------- --------------- ---------------
121 SCOTT hataf 1 BASIC NO Fenster 3 (Knoten 1): Bereiten Sie das Kommando kill –9 vor, aber lassen es noch nicht laufen! [oracle@hpws1rac1 ~]$ ps -efa |grep smon
oracle 2090 1 0 13:07 ? 00:00:00 ora_smon_ws11
oracle 11356 11127 0 14:05 pts/4 00:00:00 grep smon
oracle 18446 1 0 Sep24 ? 00:00:00 asm_smon_+ASM1
[oracle@hpws1rac1 ~]$ kill -9 2090
Fenster 1 (Knoten 1): Führen Sie ein vorbereitetes DML vollständig (siehe auch Anmerkung weiter unten) aus: SQL> delete from longrun where deptno=40 ;
Fenster 3 (Knoten 1): Das vorbereitete Kommando kill –9 laufenlassen: [oracle@hpws1rac1 ~]$ kill -9 2090 Fenster 2 (Knoten 1): Prüfen Sie die Session von User scott, hier hat ein TAF (FAILED_OVER=YES) stattgefunden: SQL> @sel_sess
SID USERNAM SERVICE INST_ID FAILOVER_METHOD FAILED_OVER
----- ------- ------- ---------- --------------- ---------------
130 SCOTT hataf 2 BASIC YES
Fenster 1 (Knoten 1): Führen Sie das commit; Kommando aus und beobachten Sie, was passiert (u. U. anderes Verhalten beim Einsatz des Base-Releases 11.1.0.6!):
TestHA.doc 11/26
SQL> commit;
commit
*
ERROR at line 1:
ORA-25402: transaction must roll back
Führen Sie den Befehl select count(*) from longrun; aus und beobachten Sie den Fehlercode: SQL> select count(*) from longrun;
select count(*) from longrun
*
ERROR at line 1:
ORA-25402: transaction must roll back
Anmerkung (MetaLink Note 337178.1 : Which are the Oracle Errors (TAF Events) to be Handled for RAC Failover) : An dieser Stelle kann auch der Fehler ORA-25405: transaction status unknown auftreten. Die für TAF relevanten Fehlermeldungen und deren Behandlung sind in der genannten Note gut beschrieben. Führen Sie den Befehl rollback; aus: SQL> rollback;
Rollback complete.
Führen Sie den Befehl select count(*) from longrun where deptno = 40; aus und beobachten Sie, was passiert: SQL> select count(*) from longrun where deptno=40 ;
COUNT(*)
----------
123190
TestHA.doc 12/26
Anmerkung (MetaLink Note 473145.1: SQLPLUS does not failover service receiving FAN events): Wenn Sie das DML-Kommando nicht vollständig durchlaufen lassen haben, so erhalten Sie folgende Meldung, weil FAN Events standardmäßig nicht korrekt verarbeitet werden: SQL> delete from longrun where deptno=40 ;
delete from longrun where deptno=40
*
ERROR at line 1:
ORA-25408: can not safely replay call
Gemäß oben genannter Note gibt es ab Patch 10.2.0.4 die Möglichkeit, SQL*plus mit der Option –F zu starten, und so die FAN-Events korrekt zu verarbeiten, wobei diese im entsprechenden Service über die EM Console aktiviert sein müssen: [oracle@hpws1rac1 workshop]$ sqlplus –F scott/tiger@hataf
Nutzen Sie zum Abschluß die EM Console, um durch einen Restart der Services diese wieder auf die richtige Instanz zu verschieben.
TestHA.doc 13/26
5. Verwaltung von nicht-Oracle Applikationen im Cluster In diesem Abschnitt wird gezeigt, dass es möglich ist, Applikationen mittels Oracle Clusterware Services zu verwalten. Hierzu wird eine Applikation my-app mit der dazugehörigen virtuellen IP-Adresse my-vip erzeugt, die durch CRS verwaltet werden. Es wird eine Abhängigkeit zwischen my-app und my-vip definiert, wobei my-app vorzugsweise auf Knoten 1 läuft und von Knoten 2 übernommen werden kann. 5.1 Vorbereitung Notieren Sie die IP-Adresse Ihres Knotens aus dem File /etc/hosts (in diesem Beispiel 10.168.244.161 für Gruppe 1): [oracle@hpws1rac1 ~]$ tail /etc/hosts
10.165.244.161 hpws1myvip
10.165.244.162 hpws2myvip
10.165.244.163 hpws3myvip
10.165.244.164 hpws4myvip
10.165.244.165 hpws5myvip
10.165.244.166 hpws6myvip
10.165.244.167 hpws7myvip
10.165.244.168 hpws8myvip
Ersetzen Sie den Platzhalter (export MYVIP=hpws#myvip) in den beiden Skripten /home/oracle/workshop/myapp/Server/check.sh und /home/oracle/workshop/myapp/Client/showapp.sh auf beiden Knoten durch den korrekten Eintrag, der zu Ihrer Gruppe (# durch Gruppennummer ersetzen) gehört. Anschließend melden Sie sich als User root an und lassen das Skript laufen, um die Umgebung zu setzen: [oracle@hpws1rac1 myapp]$ su - root
Password:
[root@hpws1rac1 ~]# cd /home/oracle/workshop/myapp
[root@hpws1rac1 myapp]# . ./setmyapp.sh
Dieses Skript setzt die folgenden Umgebungsvariablen: ORACLE_HOME=/opt/oracle/product/db
ORA_CRS_HOME=/opt/crs
PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$PATH
Prüfen Sie den Status des Cluster: [root@hpws1rac1 myapp]# /opt/crs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....SM2.asm application ONLINE ONLINE hpws1rac1
ora....C1.lsnr application ONLINE ONLINE hpws1rac1
TestHA.doc 14/26
ora....ac1.gsd application ONLINE ONLINE hpws1rac1
ora....ac1.ons application ONLINE ONLINE hpws1rac1
ora....ac1.vip application ONLINE ONLINE hpws1rac1
ora....SM1.asm application ONLINE ONLINE hpws1rac2
ora....C2.lsnr application ONLINE ONLINE hpws1rac2
ora....ac2.gsd application ONLINE ONLINE hpws1rac2
ora....ac2.ons application ONLINE ONLINE hpws1rac2
ora....ac2.vip application ONLINE ONLINE hpws1rac2
ora.ws1.db application ONLINE ONLINE hpws1rac2
ora.ws1.ha.cs application ONLINE ONLINE hpws1rac1
ora....s11.srv application ONLINE ONLINE hpws1rac1
ora....ataf.cs application ONLINE ONLINE hpws1rac1
ora....s11.srv application ONLINE ONLINE hpws1rac1
ora....11.inst application ONLINE ONLINE hpws1rac1
ora....12.inst application ONLINE ONLINE hpws1rac2 5.2 Registrierung und Starten der Applikation Registrieren Sie my-app und my-vip im Cluster, wobei der erste Parameter der Knoten ist, auf dem die Applikation laufen soll und die IP-Adresse diejenige aus der /etc/hosts im Klartext ist: [root@hpws1rac1 myapp]# /cd /home/oracle/workshop/myapp/Server
[root@hpws1rac1 Server]# . ./createapp.sh hpws1rac1 10.165.244.161
/opt/crs/bin/crs_profile -create my-vip -t application -p favored -h
hpws1rac2 -a /opt/crs/bin/usrvip -o
ap=1,oi=eth0,ov=10.165.244.161,on=255.255.254.0
/opt/crs/bin/crs_register my-vip
/opt/crs/bin/crs_setperm my-vip -u user:oracle:r-x
/opt/crs/bin/crs_profile -create my-app -t application -r my-vip -p favored
-h hpws1rac2 -a /home/oracle/workshop/myapp/Server/check.sh -o
ap=1,ci=30,ra=5
/opt/crs/bin/crs_register my-app
/opt/crs/bin/crs_setperm my-app -u user:root:r-x
[root@hpws1rac1 ~]#
Die Registrierung erfolgt durch die Funktionen crs_profile, crs_register und crs_setperm, die das Profile der Komponente anlegen (Typ, Abhängigkeiten, …) die Applikation im CRS eintragen und die Berechtigungen setzen. Im vorliegenden Fall bedeutet diese Abhängigkeit, dass my-app nur ausgeführt werden kann, wenn my-vip auf dem gleichen Knoten ansprechbar sind. Prüfen Sie den Status des Clusters: [root@hpws1rac1 ~]# /opt/crs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
my-app application OFFLINE OFFLINE
my-vip application OFFLINE OFFLINE
ora....SM2.asm application ONLINE ONLINE hpws1rac1
ora....C1.lsnr application ONLINE ONLINE hpws1rac1
ora....ac1.gsd application ONLINE ONLINE hpws1rac1
ora....ac1.ons application ONLINE ONLINE hpws1rac1
ora....ac1.vip application ONLINE ONLINE hpws1rac1
ora....SM1.asm application ONLINE ONLINE hpws1rac2
ora....C2.lsnr application ONLINE ONLINE hpws1rac2
TestHA.doc 15/26
ora....ac2.gsd application ONLINE ONLINE hpws1rac2
ora....ac2.ons application ONLINE ONLINE hpws1rac2
ora....ac2.vip application ONLINE ONLINE hpws1rac2
ora.ws1.db application ONLINE ONLINE hpws1rac2
ora.ws1.ha.cs application ONLINE ONLINE hpws1rac1
ora....s11.srv application ONLINE ONLINE hpws1rac1
ora....ataf.cs application ONLINE ONLINE hpws1rac1
ora....s11.srv application ONLINE ONLINE hpws1rac1
ora....11.inst application ONLINE ONLINE hpws1rac1
ora....12.inst application ONLINE ONLINE hpws1rac2 Wie Sie sehen, haben my-app und my-vip den Status OFFLINE. Starten Sie nun die Applikation: [root@hpws1rac1 ~]# $ORA_CRS_HOME/bin/crs_start my-app
Attempting to start `my-vip` on member `hpws1rac1`
Start of `my-vip` on member `hpws1rac1` succeeded.
Attempting to start `my-app` on member `hpws1rac1`
Start of `my-app` on member `hpws1rac1` succeeded.
[root@hpws1rac1 ~]#
Wegen der bestehenden Abhängigkeiten, startet my-vip automatisch vor my-app. Sie können den Status durch den Befehl /opt/crs/bin/crs_stat –t prüfen: [root@hpws1rac1 ~]# /opt/crs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
my-app application ONLINE ONLINE hpws1rac2
my-vip application ONLINE ONLINE hpws1rac2
ora....SM2.asm application ONLINE ONLINE hpws1rac1
ora....C1.lsnr application ONLINE ONLINE hpws1rac1
ora....ac1.gsd application ONLINE ONLINE hpws1rac1
ora....ac1.ons application ONLINE ONLINE hpws1rac1
ora....ac1.vip application ONLINE ONLINE hpws1rac1
ora....SM1.asm application ONLINE ONLINE hpws1rac2
ora....C2.lsnr application ONLINE ONLINE hpws1rac2
ora....ac2.gsd application ONLINE ONLINE hpws1rac2
ora....ac2.ons application ONLINE ONLINE hpws1rac2
ora....ac2.vip application ONLINE ONLINE hpws1rac2
ora.ws1.db application ONLINE ONLINE hpws1rac2
ora.ws1.ha.cs application ONLINE ONLINE hpws1rac1
ora....s11.srv application ONLINE ONLINE hpws1rac1
ora....ataf.cs application ONLINE ONLINE hpws1rac1
ora....s11.srv application ONLINE ONLINE hpws1rac1
ora....11.inst application ONLINE ONLINE hpws1rac1
ora....12.inst application ONLINE ONLINE hpws1rac2
5.3 Starten der Client-Applikation Starten Sie nun die Client-Applikation in Ihrem VNCServer auf dem zweiten Knoten, indem Sie als User root folgende Kommandos absetzen: [oracle@hpws1rac2 ~]$ su - root
Password:
[root@hpws1rac2 ~]# /home/oracle/workshop/myapp/Client/showapp.sh
TestHA.doc 16/26
Es öffnet sich ein grafisches Window, das anzeigt, wo die Applikation my-app derzeit läuft:
5.4 Verwaltung der Komponenten Stoppen Sie my-app mittels crs indem Sie auf einem beliebiegen Knoten die folgenden Kommandos absetzen: [oracle@hpws1rac1 ~]$ /opt/crs/bin/crs_stop my-app
Attempting to stop `my-app` on member `hpws1rac1`
Stop of `my-app` on member `hpws1rac1` succeeded.
Prüfen Sie in der grafischen Anzeige den Status von my-app, diese sollte nun Application not running anzeigen (Button Where is myapp betätigen!):
TestHA.doc 17/26
Starten Sie erneut die Applikation my-app: [oracle@hpws1rac1 ~]$ /opt/crs/bin/crs_start my-app
Attempting to start `my-app` on member `hpws1rac1`
Start of `my-app` on member `hpws1rac1` succeeded.
Stoppen Sie den ersten Knoten, auf dem die Applikation läuft, prüfen Sie jedoch vorher, dass die Client-Applikation auf dem zweiten Knoten aktiv ist: [root@hpws1rac1 ~]# shutdown -rF now
Beobachten Sie mit der Client-Applikation, was mit der my-app Anwendung passiert. Die Anwendung my-app sollte durch die Clusterware automatisch auf dem anderen Knoten erneut gestartet werden. Der Zusammenhang mit my-vip wird deutlich, indem Sie das Kommando /opt/crs/bin/crs_stat –t verwenden: [oracle@hpws1rac2 ~]$ /opt/crs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
my-app application ONLINE OFFLINE
my-vip application ONLINE ONLINE hpws1rac1
ora....SM2.asm application ONLINE ONLINE …
kurze Zeit später: [oracle@hpws1rac1 ~]$ /opt/crs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
my-app application ONLINE ONLINE hpws1rac1
my-vip application ONLINE ONLINE hpws1rac1
ora....SM2.asm application ONLINE ONLINE …
TestHA.doc 18/26
Sobald der durchgestartete Knoten wieder da ist, können Sie die Anwendung my-app zurück auf den ersten Knoten verschieben: [oracle@hpws1rac1 ~]$ /opt/crs/bin/crs_relocate -f my-app
Attempting to stop `my-app` on member `hpws1rac1`
Stop of `my-app` on member `hpws1rac1` succeeded.
Attempting to stop `my-vip` on member `hpws1rac1`
Stop of `my-vip` on member `hpws1rac1` succeeded.
Attempting to start `my-vip` on member `hpws1rac2`
Start of `my-vip` on member `hpws1rac2` succeeded.
Attempting to start `my-app` on member `hpws1rac2`
Start of `my-app` on member `hpws1rac2` succeeded.
Nachdem Sie diesen Schritt durchgeführt haben, können Sie den Vorgang auch wieder umkehren: [oracle@hpws1rac1 ~]$ /opt/crs/bin/crs_relocate -f my-app -c hpws1rac1
Attempting to stop `my-app` on member `hpws1rac2`
Stop of `my-app` on member `hpws1rac2` succeeded.
Attempting to stop `my-vip` on member `hpws1rac2`
Stop of `my-vip` on member `hpws1rac2` succeeded.
Attempting to start `my-vip` on member `hpws1rac1`
Start of `my-vip` on member `hpws1rac1` succeeded.
Attempting to start `my-app` on member `hpws1rac1`
Start of `my-app` on member `hpws1rac1` succeeded.
5.5 Entfernen der Anwendung Um die Anwendung wieder zu entfernen, rufen Sie zum Abschluß als User root folgende Kommandos auf: [oracle@hpws1rac1 myapp]$ su - root
Password:
[root@hpws1rac1 ~]# cd /home/oracle/workshop/myapp
[root@hpws1rac1 myapp]# . ./setmyapp.sh
[root@hpws1rac1 myapp]# /home/oracle/workshop/myapp/Server/rmapp.sh
Attempting to stop `my-app` on member `hpws1rac1`
Stop of `my-app` on member `hpws1rac1` succeeded.
Attempting to stop `my-vip` on member `hpws1rac1`
Stop of `my-vip` on member `hpws1rac1` succeeded.
TestHA.doc 19/26
6. Demonstration JDBC FCF (Fast Connection Failover) Dieser Testfall zeigt die Funktionalitäten Fast Application Notification (FAN) und Fast Connection Failover (FCF) mit einem Java Programm, das einen Connection Pool steuert. Dieser Connection Pool wird durch den Oracle Notification Service (ONS) mit Nachrichten über den Instanz Status (up/down) versorgt. Hierdurch wird die einwandfreie Funktion der Connections im Pool sichergestellt. 6.1 Testumgebung Die Testumgebung besteht aus folgenden Komponenten: � 2 Java Programme:
o JDBC_Thin.java (ohne FCF, User cache) o JDBC_Thin_FCF.java (mit FCF, User cachefcf)
� 2 Skripte zum Übersetzen der Java-Programme o compil_JDBC_Thin.sh o compil_JDBC_Thin_FCF.sh
� 2 Skripte zum Starten der Java-Programme o run_JDBC_Thin.sh o run_JDBC_Thin_FCF.sh
� 2 Skripte zum Prüfen der Datenbankverbindungen o conn_cache.sh o conn_cachefcf.sh
� Benutzung Oracle JDBC Driver’s Pool Manager (JDBC Implicit Connection Cache) � Das Java Programm initialisiert den Pool mit 10 Verbindungen, die auf beide Cluster
Instanzen verteilt werden. Anschließend wird eine Verbindung aus dem Pool verwendet.
� Das Programm zeigt: o Die Instanz, zu der die Verbindung besteht o Die Anzahl der aktiven Verbindungen aus dem Pool o Die Anzahl der verfügbaren Verbindungen aus dem Pool
6.2 Anlegen der Benutzer Legen Sie nun die beiden Benutzer an, die für die zwei Demos verwendet werden. Dieses tun Sie mit folgenden Kommandos als User oracle: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd /home/oracle/workshop/fcf
[oracle@hpws1rac1 fcf]$ ./createusercache.sh
6.3 Anlegen eines Service für FCF Starten Sie die EM Console in einem Browser über den während der Installation notierten Link (# durch Gruppennummer ersetzen):
TestHA.doc 20/26
https://hpws#rac1.de.oracle.com:1158/em Melden Sie sich an als User system. Nach Erscheinen des Standardbildschirms klicken Sie auf das Register Verfügbarkeit, dann auf den Link Cluster-verwaltete Datenbank-Services. Hier sollten Sie die beiden bereits angelegten Services sehen. Legen Sie durch drücken des Buttons Service erstellen einen Datenbank-Service an, der dem FCF dient. Nennen Sie den Service fcf und legen Sie ihn mit den default Attributen an. 6.4 Anpassung und Übersetzung Java Programme Passen Sie bitte in diesem Schritt noch die beiden Java Programme an. Hierzu sind lediglich die Verbindungsinformationen (Aliase der virtuellen IP-Adresse beider Knoten) und die Informationen zu dem angelegten Service folgendermaßen anzupassen: [oracle@hpws1rac1 ~]$ cd /home/oracle/workshop/fcf
[oracle@hpws1rac1 fcf]$ vi JDBC_Thin.java
…
//Change this URL:
String dbURL="jdbc:oracle:thin:@" +
"(DESCRIPTION= " +
"(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)" +
"(ADDRESS=(PROTOCOL=TCP)" +
"(HOST=hpws#rac1v)(PORT=1521))" +
"(ADDRESS=(PROTOCOL=TCP)" +
"(HOST=hpws#rac2v)(PORT=1521)))" +
"(CONNECT_DATA=(SERVICE_NAME=fcf)))";
…
:x!
[oracle@hpws1rac1 fcf]$ vi JDBC_Thin_FCF.java
…
//Change this URL:
String dbURL="jdbc:oracle:thin:@" +
"(DESCRIPTION= " +
"(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)" +
"(ADDRESS=(PROTOCOL=TCP)" +
"(HOST=hpws#rac1v)(PORT=1521))" +
"(ADDRESS=(PROTOCOL=TCP)" +
"(HOST=hpws#rac2v)(PORT=1521)))" +
"(CONNECT_DATA=(SERVICE_NAME=fcf)))";
…
// For FCF:
ods.setFastConnectionFailoverEnabled(true);
ods.setONSConfiguration("nodes=hpws#rac1:6251,hpws#rac2:6251");
// FCF – End
…
:x!
Nun müssen diese Programme noch übersetzt werden: [oracle@hpws1rac1 fcf]$ ./compil_JDBC_Thin.sh
[oracle@hpws1rac1 fcf]$ ./compil_JDBC_Thin_FCF.sh
Damit sind die vorbereitenden Arbeiten nun abgeschlossen und die Tests können beginnen.
TestHA.doc 21/26
6.5 Test ohne FCF Fenster 1 (Knoten 1): Verbinden Sie sich als User oracle und lassen Sie das Skript run_JDBC_Thin.sh laufen: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd /home/oracle/workshop/fcf
[oracle@hpws1rac1 fcf]$ ./run_JDBC_Thin.sh
Sie sehen dann folgende sich wiederholende Ausgaben: Instance name: ws11
Url=jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=hp
ws1rac1v)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=hpws1rac2v)(PORT=1521)))(
CONNECT_DATA=(SERVICE_NAME=FCF)))
NO FCF - Sessions Activ(cache): 1
NO FCF - Sessions Avail(cache): 9
Fenster 2 (Knoten1): In dem zweiten Fenster starten Sie als user oracle das Skript conn_cache.sh, um die Verbindungen zur Datenbank zu sehen: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd /home/oracle/workshop/fcf
[oracle@hpws1rac1 fcf]$ ./conn_cache.sh
SQL*Plus: Release 11.1.0.7.0 - Production on Fri Sep 26 13:06:01 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
INST_ID USERNAME
---------- ------------------------------
1 CACHE
1 CACHE
1 CACHE
1 CACHE
1 CACHE
1 CACHE
1 CACHE
2 CACHE
2 CACHE
2 CACHE
10 rows selected.
TestHA.doc 22/26
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0
- Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options In diesem Beispiel gibt es: � 10 Datenbank Verbindungen � 7 auf Instanz ws11 � 3 auf Instanz ws12 � Das Java Programm läuft auf Instanz ws11
Fenster 3 (Knoten2): Der Zweck dieser Übung ist weniger zu zeigen, was mit der Java Applikation passiert, wenn eine Instanz abbricht, sondern vielmehr, was mit dem Verbindungs Pool passiert. Brechen Sie nun die Instanz, auf der die Java Anwendung nicht läft, als User root mit dem Kommando kill –9 ab: [root@hpws1rac2 ~]# ps -efa |grep smon
oracle 5913 1 0 Sep25 ? 00:00:00 asm_smon_+ASM1
oracle 6212 1 0 Sep25 ? 00:00:02 ora_smon_ws12
root 18298 18164 0 13:13 pts/3 00:00:00 grep smon
[root@hpws1rac2 ~]# kill -9 6212
Der Pool reagiert nicht, wie die Anzeige in Fenster 1 (Knoten1) zeigt: Instance name: ws11
Url=jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=hp
ws1rac1v)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=hpws1rac2v)(PORT=1521)))(
CONNECT_DATA=(SERVICE_NAME=FCF)))
NO FCF - Sessions Activ(cache): 1
NO FCF - Sessions Avail(cache): 9
Es sind immernoch 10 Verbindungen im Pool, ein erneuter Aufruf des Skriptes in Fenster 2 (Knoten 1) zeigt jedoch nur noch die 7 Verbindungen von Instanz ws11: [oracle@hpws1rac1 fcf]$ ./conn_cache.sh
SQL*Plus: Release 11.1.0.7.0 - Production on Fri Sep 26 13:14:19 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
INST_ID USERNAME
---------- ------------------------------
1 CACHE
1 CACHE
1 CACHE
1 CACHE
TestHA.doc 23/26
1 CACHE
1 CACHE
1 CACHE
7 rows selected.
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0
- Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
6.6 Test mit FCF Fenster 1 (Knoten 1): Verbinden Sie sich als User oracle und lassen Sie das Skript run_JDBC_Thin_FCF.sh laufen: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd /home/oracle/workshop/fcf
[oracle@hpws1rac1 fcf]$ ./run_JDBC_Thin_FCF.sh
Sie sehen dann folgende sich wiederholende Ausgaben: Instance name: ws11
Url=jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=hp
ws1rac1v)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=hpws1rac2v)(PORT=1521)))(
CONNECT_DATA=(SERVICE_NAME=fcf)))
FCF - Sessions Activ(cache): 1
FCF - Sessions Avail(cache): 9
Fenster 2 (Knoten1): In dem zweiten Fenster starten Sie als User oracle das Skript conn_cachefcf.sh, um die Verbindungen zur Datenbank zu sehen: [oracle@hpws1rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? ws11
The Oracle base for ORACLE_HOME=/opt/oracle/product/db is /opt/oracle
[oracle@hpws1rac1 ~]$ cd /home/oracle/workshop/fcf
[oracle@hpws1rac1 fcf]$ ./conn_cachefcf.sh
SQL*Plus: Release 11.1.0.7.0 - Production on Fri Sep 26 13:29:16 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
INST_ID USERNAME
---------- ------------------------------
1 CACHEFCF
1 CACHEFCF
1 CACHEFCF
TestHA.doc 24/26
1 CACHEFCF
1 CACHEFCF
1 CACHEFCF
2 CACHEFCF
2 CACHEFCF
2 CACHEFCF
2 CACHEFCF
10 rows selected.
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0
- Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
In diesem Beispiel gibt es: � 10 Datenbank Verbindungen � 6 auf Instanz ws11 � 4 auf Instanz ws12 � Das Java Programm läuft auf Instanz ws11
Fenster 3 (Knoten2): Wie in dem vorigen Test brechen Sie nun die Instanz, auf der die Java Anwendung nicht läuft, als User root mit dem Kommando kill –9 ab: [root@hpws1rac2 ~]# ps -efa |grep smon
oracle 5803 1 0 07:52 ? 00:00:00 asm_smon_+ASM2
oracle 25053 1 0 13:40 ? 00:00:00 ora_smon_ws12
root 32737 20427 0 13:51 pts/1 00:00:00 grep smon
[root@hpws1rac2 ~]# kill -9 25053
Der Pool wird benachrichtigt, wie die Anzeige in Fenster 1 (Knoten1) zeigt: Instance name: ws11
Url=jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=hp
ws1rac1v)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=hpws1rac2v)(PORT=1521)))(
CONNECT_DATA=(SERVICE_NAME=fcf)))
FCF - Sessions Activ(cache): 1
FCF - Sessions Avail(cache): 5
Es sind nur noch 1 aktive und 5 verfügbare Verbindungen Verbindungen im Pool, ein erneuter Aufruf des Skriptes in Fenster 2 (Knoten 1) zeigt die 6 Verbindungen von Instanz ws11: [oracle@hpws1rac1 fcf]$ ./conn_cachefcf.sh
SQL*Plus: Release 11.1.0.7.0 - Production on Fri Sep 26 13:14:19 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
TestHA.doc 25/26
and Real Application Testing options
INST_ID USERNAME
---------- ------------------------------
1 CACHE
1 CACHE
1 CACHE
1 CACHE
1 CACHE
1 CACHE
1 CACHE
6 rows selected.
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0
- Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Sobald die Instanz ws12 neu gestartet ist, wird der Pool erneut benachrichtigt und neue Verbindungen werden bereitgestellt, wie Fenster 2 (Knoten 1) zeigt: [oracle@hpws1rac1 fcf]$ ./conn_cachefcf.sh
SQL*Plus: Release 11.1.0.7.0 - Production on Fri Sep 26 14:07:01 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
INST_ID USERNAME
---------- ------------------------------
1 CACHEFCF
1 CACHEFCF
1 CACHEFCF
1 CACHEFCF
1 CACHEFCF
1 CACHEFCF
1 CACHEFCF
2 CACHEFCF
8 rows selected.
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0
- Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
Das MinLimit (Pool Property) wird erreicht, sobald der Pool benutzt wird. In unserem Beispiel ist dieses nicht der Fall. In dem Moment, wenn die abgebrochene Instanz wiederanläuft, wird der Pool benachrichtigt und legt eine inaktive Verbindung zu der neuen Instanz an.
TestHA.doc 26/26
Anmerkung (siehe MetaLink Note 371822.1: Fan: Implictcache Doesn'T Support Minlimit After Instance Crash): Gemäß JDBC Dokumentation gilt: � Setting the MinLimit property does not initialize the cache to contain the minimum
number of connections. To do this, use the InitialLimit property. � When InitialLimit is greater than MinLimit, it is possible to have any number of
connections specified by InitialLimit upto a value specified by MaxLimit. Therefore, InitialLimit does not depend on MinLimit.
� Connections can fall below the minimum limit set on the connection pool when JDBC Fast Connection Failover DOWN events are processed. The processing removes affected connections from the pool. MinLimit will be honored as requests to the connection pool ramp up and the number of connections gets past the MinLimit value.