SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Hochverfügbarkeit von Datenquellen
      aus Sicht des OracleAS

                           Ulrich Gerkmann-Bartels
                                   Senior Consultant
                                 Oracle Technologies
Inhalt



•     Anforderungen und Wünsche

•     Lösungen von Oracle
         –       Transparent Application Failover (TAF)
         –       Fast Connection Failover (FCF)


•     Vergleich

•     Quellen




     Copyright TEAM, Paderborn Feb-07 Seite 2
Anforderungen und Wünsche



•     Die Datenquelle sollte immer verfügbar sein ! [Hochverfügbar ☺]

•     Keine Anpassungen an die Applikation bzgl. der gewählten
      Methodik zur Sicherstellung der Hochverfügbarkeit

•     Connection Pooling sollte möglich sein

•     Die laufenden Applikationen sollten keinerlei Auswirkung eines
      Ausfalls oder einer Stale Connection bemerken




     Copyright TEAM, Paderborn Feb-07 Seite 3
Randbedingungen – Application Server



•       Verwendung eines Application Servers* setzt eine Java
        Implementierung des Datenbanktreibers voraus.

•       Hochverfügbarkeit muss als Teil der JDBC Treibers implementiert
        und ggfs. des Application Servers angeboten werden.




    * Betrachtet wird hier ein Java EE / J2EE Application Server

       Copyright TEAM, Paderborn Feb-07 Seite 4
Randbedingungen - Architektur




                                            EJB



                                            JSP


                                            Session Beans

                                                        Connection Pool




                                      AS                                                      DB



                                                                          Connect wird z. Z. verwendet
                                                                          Connect wartet auf Verwendung

 Copyright TEAM, Paderborn Feb-07 Seite 5
Lösungen von Oracle zur hochverfügbaren
 Datenquellen


Oracle bietet in diesem Umfeld folgende Möglichkeiten:

      –       Transparent Application Failover


      –       Fast Connection Failover




  Copyright TEAM, Paderborn Feb-07 Seite 6
Transparent Application Failover (TAF)



•     Transparent Application Failover ermöglicht einer Application
      automatisch einen Reconnect auf eine andere Datenbankinstanz
      nach einem Verbindungsverlust durchzuführen.

•     Versucht ein Client eine aufgebaute Verbindung zu nutzen, die
      fehlerhaft ist, so wird durch TAF automatisch eine neue
      Verbindung zu einer anderen Instanz aufgebaut.




     Copyright TEAM, Paderborn Feb-07 Seite 7
TAF –Reconnect mit Oracle Real Application Cluster




Im Fehlerfall wandern die entsprechenden Verbindungen auf eine andere Instanz.

        Copyright TEAM, Paderborn Feb-07 Seite 8
TAF – Failover Level

•     SESSION (Login Failover)
         –       Client wird automatisch auf den nächsten verfügbare Knoten
                 reconnected

•     SELECT (Statement Failover)
         –       Ausfall erfolgt bei der Ausführung einer Abfrage
         –       Client wird automatisch auf den nächsten verfügbare Knoten
                 reconnected
         –       Abfrage lauft auf dem nächsten Knoten weiter



Grundsätzlich muss auf offenen Transaktionen ein Rollback erfolgen,
   es wird eine ‚ORA-25402: transaction must roll back‘
   Exception geworfen.




     Copyright TEAM, Paderborn Feb-07 Seite 9
TAF – Connection Descriptor


DEVBRAIN.TEAM-PB.DE =
    (DESCRIPTION=
              (FAILOVER=on)
               (ADDRESS=
                                 (PROTOCOL=tcp)
                                 (HOST=devbrain.team-pb.de)
                                 (PORT=1521)
                                 :
               )
               (CONNECT_DATA=
                                 (SERVICE_NAME=ORCL)
                                 (FAILOVER_MODE=
                                            (TYPE=session)
                                            (METHOD=basic)
                                            (RETRIES=20)
                                            (DELAY=15)
                                 )
               )
    )
  Copyright TEAM, Paderborn Feb-07 Seite 10
TAF - Eigenschaften



Unterstützung für:                            Keine Unterstützung für:

• User Session                                • Aktive Transaktion
• Aktive Cursor, die gerade                   • PL SQL Package – Variablen
ausgeführt werden                             • Connection Pooling
• OCI (JDBC/OCI – Thick)                      • JDBC – Thin




Beim Einsatz des Oracle JDBC/OCI Treibers ist TAF immer aktiviert !



  Copyright TEAM, Paderborn Feb-07 Seite 11
Fast Connection Failover (FCF)



•     Fast Connection Failover ermöglicht es ungültige Verbindungen
      festzustellen und diese Verbindungen aus einem Connection
      Pool zu bereinigen.

•     Ziel ist es ungültige Verbindungen in einem Pool zu minimieren
      bzw. auszuschließen, um so nur gültige Verbindungen den
      Applikationen, die den Pool nutzen zu Verfügung zu stellen.




    Copyright TEAM, Paderborn Feb-07 Seite 12
FCF – ONS Service Down Notification




                                                             ONS




                  ONS                Connection Pool



                                                             ONS
              AS

                                                       RAC
                                      Cleanup


Copyright TEAM, Paderborn Feb-07 Seite 13
FCF – ONS Service Up Notification




                                                             ONS




                  ONS                Connection Pool
                                                             OK
                                                             ONS
              AS

                                                       RAC
                                 Rebalancing


Copyright TEAM, Paderborn Feb-07 Seite 14
FCF - Randbedingungen



•     Verwendung des Implicit Connection Cache ist FCF aktiv

•     Innerhalb des Connect String muss der Service Name verwendet
      werden; Keine SID

•     Database Release 10g (R1 oder R2) Real Application Cluster DB

•     Oracle Notification Services muss auf dem JDBC Client
      (Application Server) verfügbar sein.




    Copyright TEAM, Paderborn Feb-07 Seite 15
FCF – JDBC Connection URLs


url="jdbc:oracle:oci:@(DESCRIPTION=
   (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias)
   (PORT=1521))
   (CONNECT_DATA=(SERVICE_NAME=service_name)))"

url = "jdbc:oracle:thin@//host:port/service_name"

url = "jdbc:oracle:thin:@(DESCRIPTION=
   (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias)
   (PORT=1521))
   (CONNECT_DATA=(SERVICE_NAME=service_name)))“

url = "jdbc:oracle:thin@host:port:SID"



 Copyright TEAM, Paderborn Feb-07 Seite 16
FCF – OracleAS 10gR3 – Managed Datasource

<managed-data-source jndi-name="jdbc/ManagedDS"
   description="Managed DataSource" connection-pool-
   name="myConnectionPool“ name="ManagedDS"/> <connection-pool
   name="myConnectionPool“
min-connections="10"
max-connections="30"
inactivity-timeout="30"> <connection-factory factory-
   class="oracle.jdbc.pool.OracleDataSource" user="scott"
   password="tiger" url="jdbc:oracle:thin:@(DESCRIPTION=
                       (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))
                       (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))
                       (CONNECT_DATA=(SERVICE_NAME=service_name)))">
<property name="loginTimeout" value="30"/>
<property name="connectionCachingEnabled" value="true"/>
<property name="fastConnectionFailoverEnabled" value="true"/>
 </connection-factory> </connection-pool>


  Copyright TEAM, Paderborn Feb-07 Seite 17
FCF – OracleAS 10gR3 – Native Datasource

<native-data-source name="nativeDataSource" jndi-
   name="jdbc/nativeDS" description="Native DataSource"
   data-source-class="oracle.jdbc.pool.OracleDataSource"
   user="scott" password="tiger"
   url="jdbc:oracle:thin:@(DESCRIPTION=
                  (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1)
                    (PORT=1521))
                    (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))
                    (CONNECT_DATA=(SERVICE_NAME=service_name)))">
<property name="connectionCacheName" value="ICC"/>
<property name="connectionCachingEnabled" value="true"/>
<property name="fastConnectionFailoverEnabled"
   value="true"/>
</native-data-source>



 Copyright TEAM, Paderborn Feb-07 Seite 18
FCF – Konfiguration des ONS


Je nach Produkt und Version existieren zur Zeit unterschiedliche
   Konfigurationsdateien für die Bereitstellung von ONS:



 Produkt und Version                        Konfigurationsdatei

 RAC 10gR1 und 10gR2                        $ORACLE_HOME/opmn/conf/ons.config

 OracleAS 10gR2                             $ORACLE_HOME/opmn/ons.conf

 OracleAS 10gR3                             $ORACLE_HOME/opmn/conf/opmn.xml




Copyright TEAM, Paderborn Feb-07 Seite 19
FCF – Konfiguration des ONS (Beispiele)

Oracle 10gR2 RAC

       racgons add_config rac_node2.devbrain.team-pb.de:6200


OracleAS 10g R3

<notification-server>
<port local="6104" remote="6204" request="6007"/>
<ssl enabled="false" wallet-file="$ORACLE_HOMEopmnconfssl.wltdefault"/>
<topology>
<nodes list="mt_node1.devbrain.team-pb.de:6200,rac_node1.devbrain.team-
pb.de:6200,rac_node2.devbrain-team-pb.de:6200"/>
</topology>
</notification-server>



     Quelle: Oracle Application Server 10g Fast Connection Failover Configuration Guide
  Copyright TEAM, Paderborn Feb-07 Seite 20
FCF – Test der ONS Kommunikation

Oracle RAC

$ORACLE_HOME/opmn/bin/onsctl ping

$ORACLE_HOME/opmn/bin/onsctl debug



OracleAS

$ORACLE_HOME/opmn/bin/opmnctl ping

$ORACLE_HOME/opmn/bin/opmnctl debug
                                                                             ONS




                                               ONS   Connection Pool



                                                                             ONS
                                              AS

                                                                       RAC



  Copyright TEAM, Paderborn Feb-07 Seite 21
Vergleich FCF vs TAF



1. Unabhängigkeit vom Treiber
        FCF (JDBC/Thin und JDBC/OCI); TAF nur als JDBC/OCI
2. Application-Level Connection Retries
        TAF führt einen Reconnect auf OCI/Net Level aus
3. Integration mit ‚Implizit Connection Cache‘
        TAF arbeitet pro Verbindung; Keine Notification möglich.
4. Load Balancing von neuen Verbindungen
        Keine Unterstützung mit TAF
5. Transaction Management
        Benötigt ein Rollback der Application, bei einer offenen Transaction.




  Copyright TEAM, Paderborn Feb-07 Seite 22
Kann ich nicht beides nutzen ?




                    Quelle: Oracle Database JDBC Developer‘s Guide and Reference

Copyright TEAM, Paderborn Feb-07 Seite 23
Anforderungen und Wünsche



•                                                       RAC
      Die Datenquelle sollte immer verfügbar sein ! [Hochverfügbar ☺]

•     Keine Anpassungen an die Applikation bzgl. der gewählten

                        FCF
      Methodik zur Sicherstellung der Hochverfügbarkeit

•     Connection Pooling sollte möglich sein

•     Die laufenden Applikationen sollten keinerlei Auswirkung eines
      Ausfalls oder einer Stale Connection bemerken

                                                    ET RY
                                                R

    Copyright TEAM, Paderborn Feb-07 Seite 24
Quellen

Oracle Database 10g JDBC Documentation

OC4J 10g (10.1.3.x) Documentation

OTN - OracleAS High Availability

OC4J Data Sources: Implicit Connection Caching and Fast Connection Failover

Using TAF in Oracle Real Application Cluster

Oracle Application Server 10g Fast Connection Failover Configuration Guide




  Copyright TEAM, Paderborn Feb-07 Seite 25
Vielen Dank
für Ihre Aufmerksamkeit!


                             Hermann-Löns-Str. 88
                                 33104 Paderborn

                               Fon: 05254 / 8008-0
                              Fax: 05254 / 8008-19
                           eMail: team@team-pb.de
                                    www.team-pb.de

Más contenido relacionado

Andere mochten auch

Andere mochten auch (6)

Input and Views about Oracle ADF
Input and Views about Oracle ADFInput and Views about Oracle ADF
Input and Views about Oracle ADF
 
SE 2010: how we do it
SE 2010: how we do itSE 2010: how we do it
SE 2010: how we do it
 
RAP im Enterprise - Quo Vadis Portal ?
RAP im Enterprise - Quo Vadis Portal ?RAP im Enterprise - Quo Vadis Portal ?
RAP im Enterprise - Quo Vadis Portal ?
 
DOAG 2010: SOR - Service Oriented Reporting
DOAG 2010: SOR - Service Oriented ReportingDOAG 2010: SOR - Service Oriented Reporting
DOAG 2010: SOR - Service Oriented Reporting
 
German ADF News Session: JDev 11gR2 Extension
German ADF News Session: JDev 11gR2 Extension German ADF News Session: JDev 11gR2 Extension
German ADF News Session: JDev 11gR2 Extension
 
DOAG 2006: More than Dept and Emp mit JDeveloper and ADF
DOAG 2006: More than Dept and Emp mit JDeveloper and ADFDOAG 2006: More than Dept and Emp mit JDeveloper and ADF
DOAG 2006: More than Dept and Emp mit JDeveloper and ADF
 

Ähnlich wie HA Datasource

Wie kommt der Client zur Datenbank?
Wie kommt der Client zur Datenbank?Wie kommt der Client zur Datenbank?
Wie kommt der Client zur Datenbank?Markus Flechtner
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAsKarin Patenge
 
APEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & BetriebAPEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & BetriebNiels de Bruijn
 
Integration of BI Publisher in ADF applications
Integration of BI Publisher in ADF applicationsIntegration of BI Publisher in ADF applications
Integration of BI Publisher in ADF applicationsAndreas Koop
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für EntwicklerCarsten Czarski
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickleroraclebudb
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatengeKarin Patenge
 
MT AG: Sesam oeffne Dich
MT AG: Sesam oeffne DichMT AG: Sesam oeffne Dich
MT AG: Sesam oeffne DichMT AG
 
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)triagens
 
JSON in der Oracle12c Database
JSON in der Oracle12c DatabaseJSON in der Oracle12c Database
JSON in der Oracle12c DatabaseCarsten Czarski
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...OPITZ CONSULTING Deutschland
 
Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cIleana Somesan
 
Sesam (APEX) Öffne Dich
Sesam (APEX) Öffne DichSesam (APEX) Öffne Dich
Sesam (APEX) Öffne DichOliver Lemm
 
Apex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitApex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitStefan Witwicki
 
Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!gedoplan
 
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...Loopback.ORG
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ulrike Schwinn
 
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12cMarek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12cInformatik Aktuell
 

Ähnlich wie HA Datasource (20)

Wie kommt der Client zur Datenbank?
Wie kommt der Client zur Datenbank?Wie kommt der Client zur Datenbank?
Wie kommt der Client zur Datenbank?
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
 
APEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & BetriebAPEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & Betrieb
 
Integration of BI Publisher in ADF applications
Integration of BI Publisher in ADF applicationsIntegration of BI Publisher in ADF applications
Integration of BI Publisher in ADF applications
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
MT AG: Sesam oeffne Dich
MT AG: Sesam oeffne DichMT AG: Sesam oeffne Dich
MT AG: Sesam oeffne Dich
 
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
 
JSON in der Oracle12c Database
JSON in der Oracle12c DatabaseJSON in der Oracle12c Database
JSON in der Oracle12c Database
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
 
Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12c
 
Sesam (APEX) Öffne Dich
Sesam (APEX) Öffne DichSesam (APEX) Öffne Dich
Sesam (APEX) Öffne Dich
 
SOA Suite 12c aus der Infrastruktur-Sicht
SOA Suite 12c aus der Infrastruktur-SichtSOA Suite 12c aus der Infrastruktur-Sicht
SOA Suite 12c aus der Infrastruktur-Sicht
 
Apex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitApex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - Hochverfügbarkeit
 
Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!
 
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...
Klonen von Exadata-Datenbanken mit der Oracle ZFS Appliance - Ein Erfahrungsb...
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)
 
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12cMarek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
 

Mehr von Ulrich Gerkmann-Bartels

Visualisierung von fachlichen Informationen mit Oracle ADF
Visualisierung von fachlichen Informationen mit Oracle ADFVisualisierung von fachlichen Informationen mit Oracle ADF
Visualisierung von fachlichen Informationen mit Oracle ADFUlrich Gerkmann-Bartels
 
Choice-o-mat: Entscheidungshilfe für Oracle Entwicklungswerkzeuge
Choice-o-mat: Entscheidungshilfe für Oracle Entwicklungswerkzeuge Choice-o-mat: Entscheidungshilfe für Oracle Entwicklungswerkzeuge
Choice-o-mat: Entscheidungshilfe für Oracle Entwicklungswerkzeuge Ulrich Gerkmann-Bartels
 
DOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFDOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFUlrich Gerkmann-Bartels
 
Encapsulation, the requirement for software modernization?
Encapsulation, the requirement for software modernization?Encapsulation, the requirement for software modernization?
Encapsulation, the requirement for software modernization?Ulrich Gerkmann-Bartels
 

Mehr von Ulrich Gerkmann-Bartels (8)

Visualisierung von fachlichen Informationen mit Oracle ADF
Visualisierung von fachlichen Informationen mit Oracle ADFVisualisierung von fachlichen Informationen mit Oracle ADF
Visualisierung von fachlichen Informationen mit Oracle ADF
 
Choice-o-mat: Entscheidungshilfe für Oracle Entwicklungswerkzeuge
Choice-o-mat: Entscheidungshilfe für Oracle Entwicklungswerkzeuge Choice-o-mat: Entscheidungshilfe für Oracle Entwicklungswerkzeuge
Choice-o-mat: Entscheidungshilfe für Oracle Entwicklungswerkzeuge
 
Die 5 mythen-der-forms-modernisierung
Die 5 mythen-der-forms-modernisierungDie 5 mythen-der-forms-modernisierung
Die 5 mythen-der-forms-modernisierung
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
Continuous Delivery in ADF Projekten
Continuous Delivery in ADF ProjektenContinuous Delivery in ADF Projekten
Continuous Delivery in ADF Projekten
 
DOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFDOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADF
 
Encapsulation, the requirement for software modernization?
Encapsulation, the requirement for software modernization?Encapsulation, the requirement for software modernization?
Encapsulation, the requirement for software modernization?
 
Application lifecycle in ADF Projects
Application lifecycle in ADF ProjectsApplication lifecycle in ADF Projects
Application lifecycle in ADF Projects
 

HA Datasource

  • 1. Hochverfügbarkeit von Datenquellen aus Sicht des OracleAS Ulrich Gerkmann-Bartels Senior Consultant Oracle Technologies
  • 2. Inhalt • Anforderungen und Wünsche • Lösungen von Oracle – Transparent Application Failover (TAF) – Fast Connection Failover (FCF) • Vergleich • Quellen Copyright TEAM, Paderborn Feb-07 Seite 2
  • 3. Anforderungen und Wünsche • Die Datenquelle sollte immer verfügbar sein ! [Hochverfügbar ☺] • Keine Anpassungen an die Applikation bzgl. der gewählten Methodik zur Sicherstellung der Hochverfügbarkeit • Connection Pooling sollte möglich sein • Die laufenden Applikationen sollten keinerlei Auswirkung eines Ausfalls oder einer Stale Connection bemerken Copyright TEAM, Paderborn Feb-07 Seite 3
  • 4. Randbedingungen – Application Server • Verwendung eines Application Servers* setzt eine Java Implementierung des Datenbanktreibers voraus. • Hochverfügbarkeit muss als Teil der JDBC Treibers implementiert und ggfs. des Application Servers angeboten werden. * Betrachtet wird hier ein Java EE / J2EE Application Server Copyright TEAM, Paderborn Feb-07 Seite 4
  • 5. Randbedingungen - Architektur EJB JSP Session Beans Connection Pool AS DB Connect wird z. Z. verwendet Connect wartet auf Verwendung Copyright TEAM, Paderborn Feb-07 Seite 5
  • 6. Lösungen von Oracle zur hochverfügbaren Datenquellen Oracle bietet in diesem Umfeld folgende Möglichkeiten: – Transparent Application Failover – Fast Connection Failover Copyright TEAM, Paderborn Feb-07 Seite 6
  • 7. Transparent Application Failover (TAF) • Transparent Application Failover ermöglicht einer Application automatisch einen Reconnect auf eine andere Datenbankinstanz nach einem Verbindungsverlust durchzuführen. • Versucht ein Client eine aufgebaute Verbindung zu nutzen, die fehlerhaft ist, so wird durch TAF automatisch eine neue Verbindung zu einer anderen Instanz aufgebaut. Copyright TEAM, Paderborn Feb-07 Seite 7
  • 8. TAF –Reconnect mit Oracle Real Application Cluster Im Fehlerfall wandern die entsprechenden Verbindungen auf eine andere Instanz. Copyright TEAM, Paderborn Feb-07 Seite 8
  • 9. TAF – Failover Level • SESSION (Login Failover) – Client wird automatisch auf den nächsten verfügbare Knoten reconnected • SELECT (Statement Failover) – Ausfall erfolgt bei der Ausführung einer Abfrage – Client wird automatisch auf den nächsten verfügbare Knoten reconnected – Abfrage lauft auf dem nächsten Knoten weiter Grundsätzlich muss auf offenen Transaktionen ein Rollback erfolgen, es wird eine ‚ORA-25402: transaction must roll back‘ Exception geworfen. Copyright TEAM, Paderborn Feb-07 Seite 9
  • 10. TAF – Connection Descriptor DEVBRAIN.TEAM-PB.DE = (DESCRIPTION= (FAILOVER=on) (ADDRESS= (PROTOCOL=tcp) (HOST=devbrain.team-pb.de) (PORT=1521) : ) (CONNECT_DATA= (SERVICE_NAME=ORCL) (FAILOVER_MODE= (TYPE=session) (METHOD=basic) (RETRIES=20) (DELAY=15) ) ) ) Copyright TEAM, Paderborn Feb-07 Seite 10
  • 11. TAF - Eigenschaften Unterstützung für: Keine Unterstützung für: • User Session • Aktive Transaktion • Aktive Cursor, die gerade • PL SQL Package – Variablen ausgeführt werden • Connection Pooling • OCI (JDBC/OCI – Thick) • JDBC – Thin Beim Einsatz des Oracle JDBC/OCI Treibers ist TAF immer aktiviert ! Copyright TEAM, Paderborn Feb-07 Seite 11
  • 12. Fast Connection Failover (FCF) • Fast Connection Failover ermöglicht es ungültige Verbindungen festzustellen und diese Verbindungen aus einem Connection Pool zu bereinigen. • Ziel ist es ungültige Verbindungen in einem Pool zu minimieren bzw. auszuschließen, um so nur gültige Verbindungen den Applikationen, die den Pool nutzen zu Verfügung zu stellen. Copyright TEAM, Paderborn Feb-07 Seite 12
  • 13. FCF – ONS Service Down Notification ONS ONS Connection Pool ONS AS RAC Cleanup Copyright TEAM, Paderborn Feb-07 Seite 13
  • 14. FCF – ONS Service Up Notification ONS ONS Connection Pool OK ONS AS RAC Rebalancing Copyright TEAM, Paderborn Feb-07 Seite 14
  • 15. FCF - Randbedingungen • Verwendung des Implicit Connection Cache ist FCF aktiv • Innerhalb des Connect String muss der Service Name verwendet werden; Keine SID • Database Release 10g (R1 oder R2) Real Application Cluster DB • Oracle Notification Services muss auf dem JDBC Client (Application Server) verfügbar sein. Copyright TEAM, Paderborn Feb-07 Seite 15
  • 16. FCF – JDBC Connection URLs url="jdbc:oracle:oci:@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))" url = "jdbc:oracle:thin@//host:port/service_name" url = "jdbc:oracle:thin:@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))“ url = "jdbc:oracle:thin@host:port:SID" Copyright TEAM, Paderborn Feb-07 Seite 16
  • 17. FCF – OracleAS 10gR3 – Managed Datasource <managed-data-source jndi-name="jdbc/ManagedDS" description="Managed DataSource" connection-pool- name="myConnectionPool“ name="ManagedDS"/> <connection-pool name="myConnectionPool“ min-connections="10" max-connections="30" inactivity-timeout="30"> <connection-factory factory- class="oracle.jdbc.pool.OracleDataSource" user="scott" password="tiger" url="jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))"> <property name="loginTimeout" value="30"/> <property name="connectionCachingEnabled" value="true"/> <property name="fastConnectionFailoverEnabled" value="true"/> </connection-factory> </connection-pool> Copyright TEAM, Paderborn Feb-07 Seite 17
  • 18. FCF – OracleAS 10gR3 – Native Datasource <native-data-source name="nativeDataSource" jndi- name="jdbc/nativeDS" description="Native DataSource" data-source-class="oracle.jdbc.pool.OracleDataSource" user="scott" password="tiger" url="jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))"> <property name="connectionCacheName" value="ICC"/> <property name="connectionCachingEnabled" value="true"/> <property name="fastConnectionFailoverEnabled" value="true"/> </native-data-source> Copyright TEAM, Paderborn Feb-07 Seite 18
  • 19. FCF – Konfiguration des ONS Je nach Produkt und Version existieren zur Zeit unterschiedliche Konfigurationsdateien für die Bereitstellung von ONS: Produkt und Version Konfigurationsdatei RAC 10gR1 und 10gR2 $ORACLE_HOME/opmn/conf/ons.config OracleAS 10gR2 $ORACLE_HOME/opmn/ons.conf OracleAS 10gR3 $ORACLE_HOME/opmn/conf/opmn.xml Copyright TEAM, Paderborn Feb-07 Seite 19
  • 20. FCF – Konfiguration des ONS (Beispiele) Oracle 10gR2 RAC racgons add_config rac_node2.devbrain.team-pb.de:6200 OracleAS 10g R3 <notification-server> <port local="6104" remote="6204" request="6007"/> <ssl enabled="false" wallet-file="$ORACLE_HOMEopmnconfssl.wltdefault"/> <topology> <nodes list="mt_node1.devbrain.team-pb.de:6200,rac_node1.devbrain.team- pb.de:6200,rac_node2.devbrain-team-pb.de:6200"/> </topology> </notification-server> Quelle: Oracle Application Server 10g Fast Connection Failover Configuration Guide Copyright TEAM, Paderborn Feb-07 Seite 20
  • 21. FCF – Test der ONS Kommunikation Oracle RAC $ORACLE_HOME/opmn/bin/onsctl ping $ORACLE_HOME/opmn/bin/onsctl debug OracleAS $ORACLE_HOME/opmn/bin/opmnctl ping $ORACLE_HOME/opmn/bin/opmnctl debug ONS ONS Connection Pool ONS AS RAC Copyright TEAM, Paderborn Feb-07 Seite 21
  • 22. Vergleich FCF vs TAF 1. Unabhängigkeit vom Treiber FCF (JDBC/Thin und JDBC/OCI); TAF nur als JDBC/OCI 2. Application-Level Connection Retries TAF führt einen Reconnect auf OCI/Net Level aus 3. Integration mit ‚Implizit Connection Cache‘ TAF arbeitet pro Verbindung; Keine Notification möglich. 4. Load Balancing von neuen Verbindungen Keine Unterstützung mit TAF 5. Transaction Management Benötigt ein Rollback der Application, bei einer offenen Transaction. Copyright TEAM, Paderborn Feb-07 Seite 22
  • 23. Kann ich nicht beides nutzen ? Quelle: Oracle Database JDBC Developer‘s Guide and Reference Copyright TEAM, Paderborn Feb-07 Seite 23
  • 24. Anforderungen und Wünsche • RAC Die Datenquelle sollte immer verfügbar sein ! [Hochverfügbar ☺] • Keine Anpassungen an die Applikation bzgl. der gewählten FCF Methodik zur Sicherstellung der Hochverfügbarkeit • Connection Pooling sollte möglich sein • Die laufenden Applikationen sollten keinerlei Auswirkung eines Ausfalls oder einer Stale Connection bemerken ET RY R Copyright TEAM, Paderborn Feb-07 Seite 24
  • 25. Quellen Oracle Database 10g JDBC Documentation OC4J 10g (10.1.3.x) Documentation OTN - OracleAS High Availability OC4J Data Sources: Implicit Connection Caching and Fast Connection Failover Using TAF in Oracle Real Application Cluster Oracle Application Server 10g Fast Connection Failover Configuration Guide Copyright TEAM, Paderborn Feb-07 Seite 25
  • 26. Vielen Dank für Ihre Aufmerksamkeit! Hermann-Löns-Str. 88 33104 Paderborn Fon: 05254 / 8008-0 Fax: 05254 / 8008-19 eMail: team@team-pb.de www.team-pb.de