High Availability Tests - Oracle€¦ · TestHA.doc 5/26 3. Arbeiten mit Services 3.1 Überprüfen...

26
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

Transcript of High Availability Tests - Oracle€¦ · TestHA.doc 5/26 3. Arbeiten mit Services 3.1 Überprüfen...

Page 1: High Availability Tests - Oracle€¦ · 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

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

Page 2: High Availability Tests - Oracle€¦ · 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

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

Page 3: High Availability Tests - Oracle€¦ · 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

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)

)

)

Page 4: High Availability Tests - Oracle€¦ · 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

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 ~]$

Page 5: High Availability Tests - Oracle€¦ · 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

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;

Page 6: High Availability Tests - Oracle€¦ · 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

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.

Page 7: High Availability Tests - Oracle€¦ · 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

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.

Page 8: High Availability Tests - Oracle€¦ · 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

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

Page 9: High Availability Tests - Oracle€¦ · 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

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:

Page 10: High Availability Tests - Oracle€¦ · 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

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!):

Page 11: High Availability Tests - Oracle€¦ · 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

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

Page 12: High Availability Tests - Oracle€¦ · 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

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.

Page 13: High Availability Tests - Oracle€¦ · 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

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

Page 14: High Availability Tests - Oracle€¦ · 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

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

Page 15: High Availability Tests - Oracle€¦ · 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

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

Page 16: High Availability Tests - Oracle€¦ · 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

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!):

Page 17: High Availability Tests - Oracle€¦ · 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

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 …

Page 18: High Availability Tests - Oracle€¦ · 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

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.

Page 19: High Availability Tests - Oracle€¦ · 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

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):

Page 20: High Availability Tests - Oracle€¦ · 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

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.

Page 21: High Availability Tests - Oracle€¦ · 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

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.

Page 22: High Availability Tests - Oracle€¦ · 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

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

Page 23: High Availability Tests - Oracle€¦ · 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

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

Page 24: High Availability Tests - Oracle€¦ · 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

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

Page 25: High Availability Tests - Oracle€¦ · 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

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.

Page 26: High Availability Tests - Oracle€¦ · 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

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.