次の例では、サービスを作成する方法を示し、次に異なるクライアント・メソッドを使用してこのサービスに接続するいくつかの例を示します。
この例では、ランタイム・ロード・バランシングで、サービスが次のように有効になっています。
サービス名: HR.example.com
CRMという名前のデータベース上で実行されています。
システムは4つのノードで構成されています。
-rlbgoal
パラメータの値としてSERVICE_TIME
を指定します。
リスナーのSCANアドレスはrws3010104-scan.example.com
です。
リスナー・ポートは1585です。
サービスのカーディナリティは2ですが、必要な場合は、任意のCRMデータベース・インスタンスによって提供できます。サービス構成は、次のとおりです。
優先インスタンス: CRM1、CRM2
使用可能なインスタンス: CRM3、CRM4
-clbgoal
パラメータの値としてSHORT
を指定します。
このサービスを使用するアプリケーションはアプリケーション・コンティニュイティを利用するため、-failovertype
および-commit_outcome
を設定する必要があります。デフォルトの保存パラメータを使用しますが、接続試行間に10秒の遅延を設定し、接続取得の失敗まで最大40回の再試行を設定します。
SRVCTLを使用したHRサービスの作成
次のように、SRVCTLを使用してHRサービスを作成します。
$ srvctl add service –db CRM –service HR.example.com –preferred CRM1,CRM2 –available CRM3,CRM4 –clbgoal SHORT –failovertype TRANSACTION –commit_outcome TRUE –failoverdelay 10 –failoverretry 40
次のように、HR.example.com
サービスを起動します。
$ srvctl start service –db CRM –service HR.example.com
このサービスは、最大2つのインスタンス上で使用できるようになり、CRM1およびCRM2が優先インスタンスです。
JDBCアプリケーションからHRサービスへの接続
この例では、HRサービスに接続するアプリケーションは、JDBC thinドライバでJDBC Universal Connection Poolを使用するJDBCアプリケーションです。
この例では、URLは、データベース指定子にthinスタイルのサービス名形式を指定して構築されます。高速接続フェイルオーバーが有効化され、リモートOracle Notification Serviceが構成され、クラスタ上のOracle Notification Serviceデーモンはポート6200でリスニングします。
//import packages and register the driver import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import oracle.ucp.jdbc.PoolDataSourceFactory; import oracle.ucp.jdbc.PoolDataSource; PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource(); //set the connection properties on the data source. pds.setConnectionPoolName("FCFPool"); pds.setFastConnectionFailoverEnabled(true); pds.setONSConfiguration("nodes=rws3010104-scan.example.com:6200"); pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource"); pds.setURL("jdbc:oracle:thin:@//rws3010104-scan.example.com:1585/HR.example.com"); pds.setUser("HR"); pds.setPassword("hr"); //Override any pool properties. pds.setInitialPoolSize(5); //Get a database connection from the datasource. Connection conn = pds.getConnection(); // do some work //return connection to pool conn.close(); conn=null
関連項目:
JDBCにUniversal Connection Poolを使用する方法の詳細は、『Oracle Universal Connection Pool for JDBC開発者ガイド』を参照してください。