7.5.2 Oracleの設定(Oracle JDBC Thin Driverの場合)
Oracle JDBC Thin Driverを使用してOracleに接続する場合の設定について説明します。なお,データベースとしてOracleを使用する場合は,Oracleをインストールして初期設定を済ませておいてください。詳細については,Oracleのマニュアルを参照してください。
ここでは,Oracle JDBC Thin Driverを使用して,OracleでJ2EEリソースを扱う場合に必要なデータベース側での設定と,J2EEサーバ側での設定について説明します。また,Oracleのタイムアウトの設定についても説明します。
- <この項の構成>
- (1) データベース側での設定
- (2) J2EEサーバ側での設定
- (3) タイムアウトの設定
- (4) 動的パフォーマンスビューの参照権の設定
(1) データベース側での設定
ここでは,Oracle JDBC Thin Driverを使用する場合に,データベース側で必要な設定について説明します。詳細については,Oracleのマニュアルを参照してください。
Oracleへの接続でグローバルトランザクションを使用する場合には,Oracleの接続ユーザにトランザクションリカバリを行うための権限を付与する必要があります。
●付与する権限
- SYS.DBA_PENDING_TRANSACTIONSのSELECT権限
- FORCE_ANY_TRANSACTION権限
- SYS.DBMS_SYSTEMをEXECUTEする権限(Oracle JDBC Thin Driver 9.2.0.6,10.1.0.3.0以降を使用する場合)
●権限の付与の方法
次のどちらかの方法で権限を付与します。
- Oracle Enterprise Managerコンソールを使用する
- sqlplusを使用する
次に,Oracle 9.2.0で権限を付与する場合の例を示します。なお,権限を付与する方法の詳細については,Oracleのマニュアルを参照してください。
- Oracle Enterprise Managerコンソールを使用する場合の例
Oracle Enterprise Managerコンソールを使用して権限を付与する場合の手順を次に示します。
- sysユーザでデータベースに接続します。
- [セキュリティ]-[ユーザー]-[<権限を付与するユーザ名>]-[オブジェクト権限]を開きます。
- [SYS]-[ビュー]-[DBA_PENDING_TRANSACTIONS]を選択して,SELECT権限を付与します。
- sqlplusを使用する場合の例
sqlplusを使用して権限を付与する場合の手順を次に示します。
- sysユーザでデータベースに接続します。
- 次のSQL文を発行します。
grant select on DBA_PENDING_TRANSACTIONS to <権限を付与するユーザ名>;
commit;
(2) J2EEサーバ側での設定
ここでは,Oracle JDBC Thin Driverを使用する場合に,J2EEサーバ側で必要な設定について説明します。なお,Oracle JDBC Thin Driverを使用する場合,J2EEサーバに追加する環境変数はありません。
アプリケーションサーバがサポートするバージョンの,Oracle JDBC Thin DriverのJARファイルを入手してください。Oracleクライアントのインストールディレクトリ下の「jdbc/lib/ojdbc14.jar」,「jdbc/lib/ojdbc14_g.jar」,「jdbc/lib/ojdbc5.jar」,「jdbc/lib/ojdbc5_g.jar」,「jdbc/lib/ojdbc6.jar」および「jdbc/lib/ojdbc6_g.jar」が該当するJARファイルです。
このとき,Oracle JDBC Thin Driverのバージョンは,パッチレベル(パッチ番号)まで一致している必要があります。例えば,Oracle JDBC Thin Driverのバージョンが9.2.0.5の場合は,「9.2.0」がバージョン番号で,末尾の「5」がパッチ番号になります。
Oracle JDBC Thin Driverの入手方法の具体例としては,J2EEサーバを動作させるマシンにOracleクライアントをインストールする方法があります。Oracleクライアントのインストール手順の概略を次に示します。
- J2EEサーバを動作させるマシンに,アプリケーションサーバがサポートするバージョン番号のOracleクライアントをインストールします。
このとき,Oracle JDBC Thin Driverもインストールされます。
- アプリケーションサーバがサポートするパッチレベル(パッチ番号)のパッチを適用します。
- 簡易構築定義ファイルに,Oracle JDBC Thin DriverのJARファイルのパスを指定します。
簡易構築定義ファイルを作成するときに,物理ティアの定義(<tier>タグの定義)のJ2EEサーバの定義で,<configuration>タグに次の設定を追加してください。なお,設定する値はOracleのバージョンによって異なります。
Oracleのバージョン | <param-name>タグの指定値 | <param-value>タグの指定値 |
---|
Oracle9i | add.class.path | <ojdbc14.jarのクラスパス> |
Oracle10g |
Oracle11g | JDK 5 | <ojdbc5.jarのクラスパス> |
JDK 6 | <ojdbc6.jarのクラスパス> |
注 add.class.pathに指定できるOracleのJDBCドライバは一つだけです。Oracle9iおよびOracle10gのJDBCドライバ(ojdbc14.jarまたはojdbc14_g.jar)と,Oracle11gのJDBCドライバ(ojdbc5.jarもしくはojdbc5_g.jar,またはojdbc6.jarもしくはojdbc6_g.jar)の両方は指定できません。なお,ojdbc14.jar,ojdbc5.jarおよびojdbc6.jarの代わりにojdbc14_g.jar,ojdbc5_g.jarまたはojdbc6_g.jarのクラスパスを指定すると,Oracle JDBC Thin Driverの内部トレースがDB Connectorのログファイルに出力されます。
簡易構築定義ファイルの作成については,「8.4 システムの構成定義」または「10.2 システムの構成定義」を参照してください。設定内容の詳細については,マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「4.6 簡易構築定義ファイル」を参照してください。
- J2EEサーバに,Oracle JDBC Thin Driver用のDB Connectorをインポートします。
DB Connectorのインポートについては,「8.8.3 リソースアダプタのインポートと開始」または「10.6.2 リソースアダプタのインポートと開始」を参照してください。
Oracle JDBC Thin Driver用のDB Connectorは,2種類あります。トランザクションの管理方法によって,次のどちらかのファイルを選択してください。
- DBConnector_Oracle_CP.rar
- ローカルトランザクション,またはトランザクション管理なしで使用する場合(トランザクションのサポートレベルにLocalTransactionまたはNoTransactionを指定する場合)に選択します。Oracle JDBC Thin DriverのConnectionPoolDataSourceを使用してデータベースに接続します。
- DBConnector_Oracle_XA.rar
- グローバルトランザクションを使用する場合(トランザクションのサポートレベルにXATransactionを指定する場合)に選択します。Oracle JDBC Thin DriverのXADataSourceを使用してデータベースに接続します。
トランザクションの管理方法の詳細については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「3.4 トランザクション管理」を参照してください。
(3) タイムアウトの設定
Oracleのサーバ定義のDISTRIBUTED_LOCK_TIMEOUTパラメタに設定します。
なお,このほかXAOpenStringのSesTmパラメタの設定がタイムアウトに影響しますが,このパラメタはチューニングできません。
詳細については,次の個所またはマニュアルを参照してください。
- マニュアル「Cosminexus アプリケーションサーバ システム設計ガイド」の「8.6.5 データベースでのタイムアウトを設定する」
- マニュアル「Cosminexus アプリケーションサーバ システム設計ガイド」の「8.6.7 タイムアウトを設定するチューニングパラメタ」
- Oracleのマニュアル
(4) 動的パフォーマンスビューの参照権の設定
Oracleに接続するユーザは,動的パフォーマンスビューの参照権を持っている必要があります。次のどちらかの方法でOracleに接続するユーザに動的パフォーマンスビューの参照権を設定してください。
- 「GRANT SELECT_CATALOG_ROLE TO <ユーザ名>;」を実行する。
- 「GRANT SELECT ON V_$INSTANCE TO <ユーザ名>;」,「GRANT SELECT ON V_$PROCESS TO <ユーザ名>;」,および「GRANT SELECT ON V_$SESSION TO <ユーザ名>;」を実行する。