Oracle Universal Connection Pool(UCP)バージョン11.2.0.1.0からの高速接続フェイルオーバー(FCF)サポートをテストしています。試行されているシナリオは計画停止イベントです。 Oracle Database 11gリリース11.2.0.2.0標準版は、使用されているデータベースのバージョンです。以下は、私は私のテストOracle UCP-FCF計画停止サポート
- に次の手順の接続を取得し、
- クエリを実行したノードの一つに「-n -dインスタンスを停止SRVCTL」それは
- 実行に接続されているインスタンスを印刷します最初の手順で取得した接続で
第3ステップは、エラーで失敗し(ORA-03113:ファイルの終端通信チャネル上を)が計画停止イベントであるのでときにはなりません。 ucpログの分析私は、FANイベントがjdbcクライアントによって受信され、接続ステータスを "STATUS_CLOSE_ON_RETURN"とマークして処理したが、その借用した接続を使用してクエリを実行することができないことがわかりました。
借用した接続で実行されたクエリはすべて成功し、接続はプールに返されるまで有効なままです。それはその後、プールによって閉じられるべきです。これが完了するまで、stop instanceコマンドは成功しません。
設定には何もありませんか?上記のsrvctlコマンドは正しいですか?
PoolDataSourceImpl pds = new PoolDataSourceImpl();
try {
pds.setConnectionPoolName("Connection Pool");
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setConnectionFactoryProperties(getOracleDataSourceProperties());
pds.setDataSourceName("DataSource");
pds.setServerName(SERVER_NAME);
pds.setUser("system");
pds.setPassword("pass");
pds.setPortNumber(1521);
pds.setMinPoolSize(0);
pds.setMaxPoolSize(25);
pds.setMaxIdleTime(1800);
pds.setValidateConnectionOnBorrow(true);
pds.setONSConfiguration("nodes=v-ind-db-11g-01:6200,v-ind-db-11g-02:6200");
pds.setFastConnectionFailoverEnabled(true);
pds.setInactiveConnectionTimeout(20);
pds.setConnectionWaitTimeout(20);
pds.setPropertyCycle(60);
pds.startPool();
} catch (SQLException e) {
throw new RuntimeException("Cannot create project datasource", e);
}
.......
Properties getOracleDataSourceProperties() {
Properties p = new Properties();
p.put("driverType", "oci");
p.put("networkProtocol", "tcp");
p.put("serviceName", SERVICE_NAME);
return p;
}