Oracle

Java 應用程序未在 Oracle 數據庫中使用透明應用程序故障轉移

  • August 4, 2020

我有一個客戶有一個 RAC 環境(2 個節點,數據庫版本是 11gR2)。

集群件版本:

[grid@server2 ~]$ crsctl query crs releaseversion
Oracle High Availability Services release version on the local node is [11.2.0.4.0]
[grid@server2 ~]$ crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.2.0.4.0]

他們的應用程序沒有正確使用 TAF(透明應用程序故障轉移)

經過一些研究,我使用swingbanch進行了測試,並且在我的 LAB 環境中發現了相同的行為:

INST_ID USERNAME   SERVER    SERVICE_NAME         PROGRAM              STATUS   FAILOVER_TYPE FAILOVER_M FAI
---------- ---------- --------- -------------------- -------------------- -------- ------------- ---------- ---
        1 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        1 SOE        DEDICATED mootdb_prod          sqlplus.exe          INACTIVE SELECT        BASIC      NO
        1 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        1 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        1 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        1 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        1 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO
        2 SOE        DEDICATED mootdb_prod          JDBC Thin Client     ACTIVE   NONE          NONE       NO

使用上述 TAF 的唯一會話是從 sqlplus(failover_type 列)手動創建的會話。我在所有會話中使用相同的 tnsnames 別名。

為什麼會這樣。應用程序方面是否也有一些要求才能正常工作?

輸出顯示您的會話使用無法使用 TAF 的“瘦”驅動程序(JDBC 瘦客戶端)。

透明的應用程序故障轉移

透明應用程序故障轉移 (TAF) 是 Java 數據庫連接 (JDBC) Oracle 呼叫介面 (OCI) 驅動程序的一項功能。

有時 JDBC OCI 驅動程序也稱為“Thick”驅動程序。

這是關於此主題的部落格系列:

https://blog.yannickjaquier.com/oracle/jdbc-client-high-availability-features-part-1.html

第 2 部分是關於 TAF:

https://blog.yannickjaquier.com/oracle/jdbc-failover-highly-available-part-2.html

確保將 swingbench 配置為使用oci驅動程序類型。它有-dt oci命令行選項。還要確保使用正確的連接字元串和故障轉移選項和地址。

引用自:https://dba.stackexchange.com/questions/273224