設定持續可用性的動因

本文描述如何設定驅動程式以持續提供使用。

設定 JDBC 精簡驅動程式

  1. 確定已在從屬端套用所有建議的修正程式。請參閱 MOS 備註應用程式連續性的用戶端驗證矩陣 (文件 ID 2511448.1)。

  2. 使用 JDBC 敘述句快取進行涵蓋範圍和效能

    若要獲得最佳涵蓋範圍與效能,請使用 JDBC 驅動程式陳述式快取來取代應用程式伺服器陳述式快取。這可讓驅動程式知道在要求結束時會關閉敘述句和釋放記憶體。

    若要使用 JDBC 敘述句快取,請使用連線特性 oracle.jdbc.implicitStatementCacheSize (OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE)。陳述式快取為每一連線。快取大小的值符合您的 open_cursors 數目。舉例而言:

    oracle.jdbc.implicitStatementCacheSize=nnn,其中 nnn 通常介於 10 到 100 之間,且等於應用程式維護的開啟游標數目。

  3. 調整資源回收器

    對許多應用程式來說,預設的「資源回收器」調整已足夠。對於傳回並保留大量資料的應用程式,您可以使用較高的值,例如 2GB 或更大值。舉例而言:

     java -Xms3072m -Xmx3072m
    

    建議將初始 Java 堆集大小 (毫秒) 的記憶體配置和堆集大小上限 (mx) 設為相同的值。這樣可避免在增加和縮小記憶體堆集時使用系統資源。

  4. JDBC 具體類別

    對於 JDBC 應用程式,Oracle 不支援不再使用的 oracle.sql 具體類別 BLOB、CLOB、BFILE、OPAQUE、ARRAY、STRUCT 或 ORADATA。(請參閱 MOS 注意事項 1364193.1、新 JDBC 介面 )。使用用戶端上的 ORAchk -acchk 以瞭解應用程式是否通過。從 Oracle JDBC 精簡型驅動程式版本 18c 和更新版本開始,將「JDBC 重新執行驅動程式」的受限制具體類別清單縮減為下列項目:oracle.sql.OPAQUEoracle.sql.STRUCToracle.sql.ANYDATA

  5. 設定快速連線容錯移轉 (FCF)

    這對應於啟用 FAN 事件訂閱。

    對於用戶端驅動程式 12c 及更新版本:

    • 自動使用建議的網址

    • 檢查 ons.jar (加上選擇性的 WALLET jars、osdt_cert.jar、osdt_core.jar 以及 oraclepki.jar) 是否在 CLASSPATH 上

    • 設定集區或驅動程式特性 fastConnectionFailoverEnabled=true

    • UCP (建議) 或協力廠商連線集區

    • ONS 的 Open port 6200 (6200 是預設連接埠,可能已選擇其他連接埠)

    對於 12c 之前的用戶端驅動程式,請使用提供的位址:

    • 設定 oracle.ons.nodes =XXX01:6200、XXX02:6200、XXX03:6200

設定 OCI (Oracle Call Interface) 驅動程式

  1. 確定已在從屬端套用所有建議的修正程式。請參閱 MOS 備註應用程式連續性的用戶端驗證矩陣 (文件 ID 251148.1)。

  2. OCIStmtPrepare 取代為 OCIStmtPrepare2OCIStmtPrepare() 自 12.2 起已不再使用。所有應用程式都應該使用 OCIStmtPrepare2()。TAC 與 AC 允許 OCIStmtPrepare,但不要重新執行此陳述式。

  3. 若要在 OCI 型應用程式使用 FAN,請執行下列作業:

    • 已在服務上預先設定 aq_ha_notifications

    • 自動使用建議的連線字串

    • 設定 FAN 的從屬端 (包括選擇性公事包) 中所述,在 oraaccess.xml 中設定 auto_config、事件和 wallet_location (選擇性)。

    • 將應用程式與 O/S 從屬端繫線程式庫連結

    • ONS 開啟連接埠 6200 (6200 為預設連接埠,可能已選擇其他連接埠)。對於 12c 之前的從屬端驅動程式,請使用 oraccess.xml 中提供的位址。

設定 ODP.NET 未受管理的提供者驅動程式

  1. 確定已在從屬端套用所有建議的修正程式。請參閱 MOS 備註應用程式連續性的用戶端驗證矩陣 (文件 ID 251148.1)。

  2. 若要針對 Oracle Call Interface 型應用程式使用 FAN,請執行下列作業:

    • 會在服務上預先設置 aq_ha_notifications

    • 自動使用建議的連線字串

    • 在 oraaccess.xml 中設定 onsConfig 和 wallet_location (選擇性),如設定 FAN 的從屬端 (包括選擇性公事包) 中所述。

    • ONS 的 Open port 6200 (6200 是預設連接埠,可能已選擇其他連接埠)

    • 在連線字串中設定 FAN:"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true;"

    • (選擇性) 設定「程式實際執行負載平衡」,以及連線字串:"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true; load balancing=true;"

啟用容錯移轉的服務屬性

預先定義的服務 tp_tlstptpurgent_tlstpurgent 預設會啟用「通透應用程式連續性」,因此如果您使用其中一項服務,就不需要執行任何動作。此外,FAILOVER_RESTOREDEFAULT 值為 AUTO

您可以使用 DBMS_APP_CONT_ADMIN 套裝程式變更服務上提供的容錯移轉類型。您可以使用此 API 啟用應用程式連續性、通透應用程式連續性或通透應用程式容錯移轉 (TAF),或完全停用容錯移轉。新的階段作業將會使用新的容錯移轉類型。您必須是管理員才能使用這些程序。

啟用服務的「通透應用程式連續性」:

execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('databaseid_high.atp.oraclecloud.com');

若要啟用服務的「應用程式連續性」:

execute DBMS_APP_CONT_ADMIN.ENABLE_AC('databaseid_tpurgent.atp.oraclecloud.com');

若要啟用服務的 TAF SELECT:

execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('databaseid_low.atp.oraclecloud.com');

若要啟用服務的 TAF BASIC:

execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('databaseid_medium.atp.oraclecloud.com', 'SESSION');

停用服務的容錯移轉:

execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER('databaseid_high.atp.oraclecloud.com');

如果您想要在不修改服務的情況下使用 TAF,請在連線字串中使用較舊的 TAF 從屬端組態:

(FAILOVER_MODE=(TYPE=select)(METHOD=basic)(OVERRIDE=TRUE))

設定維護的服務屬性

計畫性維護開始時,需要清空的階段作業會標示為清空。閒置階段作業會逐步釋出。在該階段作業中執行的工作完成時,會清空作用中階段作業。階段作業清空廣泛用於設定「快速應用程式通知 (FAN)」的 Oracle 連線集區和中間層。從 Oracle Database 18c 開始,當資料庫停止或重新定位時,資料庫本身會清空階段作業。排水是隱藏計畫性維護的最佳解決方案。

容錯移轉解決方案 (例如「應用程式連續性」) 會在工作不會在配置的時間排水時回復。

您可以使用套裝軟體 DBMS_APP_CONT_ADMIN 在服務上設定清空逾時 (秒) 和停止選項。您必須是管理員才能使用這些程序。

若要將清空逾時調整為 600 秒,並將停止選項設為 IMMEDIATE:

execute DBMS_APP_CONT_ADMIN.SET_DRAINING('databaseid_high.atp.oraclecloud.com', 600, 'IMMEDIATE' );

僅調整排水逾時:

execute DBMS_APP_CONT_ADMIN.SET_DRAINING('databaseid_tpurgent.atp.oraclecloud.com', 600);

「通透應用程式連續性 (TAC)」是使用 DBMS_APP_CONT_ADMIN.ENABLE_TAC 程序設定的容錯移轉選項。ENABLE_TAC 程序需要三個參數:SERVICE NAME 是要變更的服務名稱,FAILOVER_RESTORE,設為 AUTO 以選取「通透應用程式連續性 (TAC)」,而 REPLAY_INITIATION_TIMEOUT 是重新執行逾時,指定送出要求以允許重新執行要求的秒數。

例如,以 ADMIN 使用者身分,若要啟用 TP 服務的「通透應用程式連續性 (TAC)」,其重新執行逾時設為 20 分鐘:

execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('databaseid_tp.atp.oraclecloud.com', 'AUTO', 1200);

應用程式連續性 (AC) 是使用 DBMS_APP_CONT_ADMIN.ENABLE_AC 程序設定的容錯移轉選項。ENABLE_AC 程序需要三個參數:SERVICE NAME 是要變更的服務名稱,FAILOVER_RESTORE 設為 LEVEL1 以選取應用程式連續性 (AC),而 REPLAY_INITIATION_TIMEOUT 則是重新執行逾時,指定送出要求以允許該要求重新執行後的秒數。

例如,以 ADMIN 使用者身分啟用 TPURGENT 服務的應用程式連續性:

execute DBMS_APP_CONT_ADMIN.ENABLE_AC('databaseid_tpurgent.adb.oraclecloud.com', 'LEVEL1', 600);

設定 FAN 的從屬端 (包括選擇性公事包)

使用自治式 AI 資料庫時,可使用公事包式認證作為 FAN 的選項。使用與 TNS 連線相同的公事包。

針對 JDBC 應用程式

  1. 請確定應用程式的 CLASSPATH 中有下列 jar 檔案:

     (ons.jar, osdt_cert.jar, osdt_core.jar, oraclepki.jar)
    
    
  2. 以下列其中一種方式指定 FAN 公事包:

    • 若要在公事包使用自動設定的 ONS,請設定下列 Java 系統特性:

      "-Doracle.ons.walletfile=/replace this with host path/onswallet"
      
      "-Doracle.ons.walletpassword=myONSWalletPassword"
      

      請注意,無法根據每個集區或每個連線設定這些值。

    • 若要明確設定 ONS,請執行下列其中一項作業:

      • 使用 UCP XML 組態檔明確設定。舉例而言:

                
         <ucp-properties>
         <connection-pool
           connection-pool-name="UCP_pool1"
           user="dbuser"
           password="dbuserpasswd"
           connection-factory-class-name="oracle.jdbc.pool.OracleDataSource"
           initial-pool-size="10"
           min-pool-size="5"
           max-pool-size="15"
           validate-connection-on-borrow="true"
           connection-wait-timeout="900"
           max-connections-per-service="50"
           sql-for-validate-connection="select 1 from dual"
           url="jdbc:oracle:thin:@(DESCRIPTION =(CONNECT_TIMEOUT= 120)(RETRY_COUNT=20) (RETRY_DELAY=3) (TRANSPORT_CONNECT_TIMEOUT=3)(ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST=primary-scan)(PORT=1521)))(ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST=standby-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = MY-SERVICE)))"
           fastConnectionFailoverEnabled="true"
           onsConfiguration="nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_with_host_path/onswallet\nwalletpassword=myWalletPassword" >
          </connection-pool>
         </ucp-properties>
        
      • 使用對 setONSConfiguration() 的呼叫,從 UCP 內以程式設計方式設定,例如:

        pds.setONSConfiguration("nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_this_with_host_path/onswallet\nwalletpassword=myWalletPassword");
        

使用 Oracle 驅動程式版本 12.2 或更新版本的 Oracle Call Interface (OCI) 應用程式

將下列內容新增至 oraaccess.xml 檔案的 <default_parameters> 區段:

<default_parameters>
      (Other settings may be present in this section)
   <events>
      true
   </events>
   <ons>
      <auto_config>true</auto_config>
      <wallet_location>/my_path/onswallet</wallet_location>
   </ons>
</default_parameters>

<wallet_location> 路徑應該是包含公事包的目錄名稱。

其他參數可在 oraaccess.xmlons 區段中設定,包括 <hosts><max_connections><subscription_wait_timeout>

支援原生事件設定控制項的驅動程式可能會省略 <events> 區段,並改用驅動程式設定。

依照預設,即使 ONS 失敗,也會建立資料庫的連線。如果您希望在此案例中連線失敗,可以將區段新增至與 <events><ons> 相同的層次:

<fan>
   <subscription_failure_action>
      error
   </subscription_failure_action>
</fan>

oraaccess.xml 檔案放置在與 tnsnames.orasqlnet.ora 網路檔案相同的目錄中。例如,使用 Oracle Instant Client 時,這些檔案可能位於預設目錄 network/admin 中。或者,所有網路配置檔都可以放置在其他可存取的目錄中。然後將環境變數 TNS_ADMIN 設定為該目錄名稱。

ODP.Net 受管理提供者

使用 application.config 檔案來指定 ONS 組態和公事包位置。舉例而言:

<oracle.manageddataaccess.client>
    <version number="*">
      <onsConfig mode="remote">
        <settings>
          <setting name="Protocol" value="TCPS" />
          <setting name="WALLET_LOCATION" value="C:\myPath\ONS_SSLWallet" />
        </settings>
        <ons database="atp01db">
          <add name="nodeList" value="racNode1:6205,racNode2:6205,racNode3:6205" />
        </ons>
      </onsConfig>
    </version>
</oracle.manageddataaccess.client>

相關內容