次の例では、サービスを作成する方法を示し、次に異なるクライアント・メソッドを使用してこのサービスに接続するいくつかの例を示します。
この例では、ランタイム・ロード・バランシングで、サービスが次のように有効になっています。
サービス名: 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開発者ガイド』を参照してください。