2012-02-17 9 views
1

Oracle Universal Connection Pool(UCP)バージョン11.2.0.1.0からの高速接続フェイルオーバー(FCF)サポートをテストしています。試行されているシナリオは計画停止イベントです。 Oracle Database 11gリリース11.2.0.2.0標準版は、使用されているデータベースのバージョンです。以下は、私は私のテストOracle UCP-FCF計画停止サポート

  1. に次の手順の接続を取得し、
  2. クエリを実行したノードの一つに「-n -dインスタンスを停止SRVCTL」それは
  3. 実行に接続されているインスタンスを印刷します最初の手順で取得した接続で

第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; 
     } 
 

答えて

1

の下にあなたがSHUTDOWN NORMALを行い、その後、あなたのトランザクションを完了した場合など

オラクルプールの構成は、あなたのアプリが正常続けるんですか?

Looks likesrvctl stop instance -d XXX -n YYY -o normalこれを行う必要があります。

This threadは、srvctlのデフォルトのシャットダウン方法が、あなたが見ているものを説明する "即時"であることを示しています。

1

私は2つの変化

  1. は、新しいサービスを作成するとFCFのためのUCPサポートをテストすることができました。最初の試行で使用されたサービスはデフォルトのサービスで、FCF機能はデフォルトサービスではhereと記載されているように動作しません。

  2. インスタンスの代わりにサービスを停止します。インスタンスを停止すると、計画外の停止をシミュレートします。