設定持續可用性的驅動程式
設定 JDBC Thin 驅動程式
-
確定在從屬端套用所有建議的修正程式。請參閱 MOS 注意事項 Client Validation Matrix for Application Continuity (文件 ID 2511448.1)。
-
使用 JDBC 敘述句快取進行涵蓋範圍和效能
若要獲得最佳涵蓋範圍和效能,請使用 JDBC 驅動程式敘述句快取來取代應用程式伺服器敘述句快取。這樣可以讓驅動程式知道敘述句已經關閉,而且可以在要求結束時釋出記憶體。
若要使用 JDBC 敘述句快取,請使用連線特性
oracle.jdbc.implicitStatementCacheSize
(OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE)
。每個連線的敘述句快取。快取大小的值符合您的open_cursors
數目。舉例而言:oracle.jdbc.implicitStatementCacheSize=nnn
,其中nnn
通常介於 10 到 100 之間,而且等於應用程式維護的開啟游標數。 -
調整資源回收器
對許多應用程式而言,預設的「資源回收器」調整已足夠。對於傳回並保留大量資料的應用程式,您可以使用較高的值,例如 2GB 或更大。舉例而言:
java -Xms3072m -Xmx3072m
建議將初始 Java 堆集大小 (毫秒) 和堆集大小上限 (mx) 的記憶體配置設為相同的值。這樣可避免使用系統資源來增加或縮小記憶體堆集。
-
JDBC 具體類別
對於 JDBC 應用程式,Oracle 不支援已不再使用的
oracle.sql
具體類別 BLOB、CLOB、BFILE、OPAQUE、ARRAY、STRUCT 或 ORADATA。(請參閱 MOS 注意事項 1364193.1,新 JDBC 介面 )。使用從屬端上的ORAchk -acchk
來瞭解應用程式是否通過。從 Oracle JDBC-thin 驅動程式版本 18c 和更新版本開始,「JDBC 重新執行驅動程式」的限制具體類別清單會縮減為下列各項:oracle.sql.OPAQUE
、oracle.sql.STRUCT
、oracle.sql.ANYDATA
-
設定快速連線容錯移轉 (FCF)
這對應於啟用 FAN 事件訂閱。
對於用戶端驅動程式 12c 及更新版本:
- 使用建議的自動開啟網址
- 檢查 ons.jar (加上選擇性 WALLET Jar,osdt_cert.jar,osdt_core.jar,oraclepki.jar) 是否在 CLASSPATH 上
- 設定集區或驅動程式特性 fastConnectionFailoverEnabled=true
- UCP (建議) 或協力廠商連線集區
- ONS 的開放連接埠 6200 (預設連接埠為 6200,但選擇了其他連接埠)
對於 12c 之前的用戶端驅動程式,請使用提供的位址:
- 設定 oracle.ons.nodes =XXX01:6200、XXX02:6200、XXX03:6200
設定 OCI (Oracle Call Interface) 驅動程式
-
確定在從屬端套用所有建議的修正程式。請參閱 MOS 注意事項應用軟體連續性的用戶端驗證矩陣 (文件 ID 251148.1)。
-
將
OCIStmtPrepare
取代為OCIStmtPrepare2
。OCIStmtPrepare()
自 12.2 起已不再使用。所有應用程式都應該使用OCIStmtPrepare2()
。TAC 與 AC 允許OCIStmtPrepare
,但不會重新執行此陳述式。 -
若要將 FAN 用於以 OCI 為基礎的應用程式,請執行下列作業:
- aq_ha_notifications 會在服務上預先設定
- 自動使用建議的連線字串
- 在 oraaccess.xml 中設定 auto_config、事件和 wallet_location (選擇性),如設定 FAN 包含選擇性公事包的從屬端中所述。
- 將應用程式與 O/S 從屬端繫線程式庫連結
- 開啟 ONS 的連接埠 6200 (預設連接埠為 6200,但選擇了其他連接埠)。對於 12c 之前的用戶端驅動程式,請使用 oraccess.xml 中提供的位址。
設定 ODP.NET 未受管理的提供者驅動程式
-
確定在從屬端套用所有建議的修正程式。請參閱 MOS 注意事項應用軟體連續性的用戶端驗證矩陣 (文件 ID 251148.1)。
-
若要將 FAN 用於以 Oracle Call Interface 為基礎的應用程式,請執行下列作業:
- aq_ha_notifications 會在服務上預先設定
- 自動使用建議的連線字串
- 在 oraaccess.xml 中設定 onsConfig 和 wallet_location (選擇性),如設定 FAN 包含選擇性公事包的從屬端中所述。
- ONS 的開放連接埠 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_tls
、tp
、tpurgent_tls
和 tpurgent
預設會啟用「通透應用程式連續性」,因此如果使用其中一個服務,就不需要執行任何動作。此外,FAILOVER_RESTORE
的 DEFAULT
值為 AUTO
。
您可以使用 DBMS_APP_CONT_ADMIN
套裝軟體變更服務上提供的容錯移轉類型。您可以使用此 API 啟用應用程式連續性、通透應用程式連續性或通透應用程式容錯移轉 (TAF),或者完全停用容錯移轉。新的階段作業將使用新的容錯移轉類型。您必須是管理員才能使用這些程序。
若要啟用服務的「通透應用程式連續性」,請執行下列動作:
execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('HIGH');
若要啟用服務的「應用程式連續性」,請執行下列動作:
execute DBMS_APP_CONT_ADMIN.ENABLE_AC('TPURGENT');
若要啟用服務的 TAF SELECT:
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('LOW');
若要啟用服務的 TAF BASIC:
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('MEDIUM', 'SESSION');
停用服務的容錯移轉:
execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER('HIGH');
如果您想要在不修改服務的情況下使用 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('HIGH', 600, 'IMMEDIATE' );
僅調整清空逾時:
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('TPURGENT', 600);
設定 FAN 的從屬端 (包括選擇性公事包)
使用 Autonomous Database 時,可使用公事包式認證作為 FAN 選項。使用與 TNS 連線相同的公事包。
針對 JDBC 應用程式
-
確定應用程式的
CLASSPATH
中有下列 jar 檔案:(ons.jar, osdt_cert.jar, osdt_core.jar, oraclepki.jar)
-
以下列其中一種方式指定 FAN 的公事包:
-
若要在公事包使用自動設定的 ONS,請設定下列 Java 系統特性:
"-Doracle.ons.walletfile=/replace this with host path/onswallet"
"-Doracle.ons.walletpassword=myONSWalletPassword"
請注意,無法針對每個集區或每個連線設定這些值。
-
若要明確設定 ONS,請執行下列其中一項作業:
-
明確使用 UCP XML 組態檔設定。舉例而言:
<!--?xml version="1.0" encoding="UTF-8"? --> <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.xml
的 ons
區段中設定,包括 <hosts>
、<max_connections>
和 <subscription_wait_timeout>
。
支援原生事件設定控制項的驅動程式可能會省略 <events>
區段,並改用驅動程式設定。
依照預設,即使 ONS 失敗,也會建立資料庫連線。如果您希望在此案例中連線失敗,可以將區段新增至與 <events>
和 <ons>
相同的層次:
<fan> <subscription_failure_action> error </subscription_failure_action> </fan>
將 oraaccess.xml
檔案置於與 tnsnames.ora
和 sqlnet.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>