Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


3.6.7 Oracleと接続する場合の前提条件と注意事項

ここでは,Oracleと接続する場合の前提条件と注意事項について説明します。

〈この項の構成〉

(1) 前提条件

(2) Oracleと接続する場合の注意事項

ここでは,Oracleに接続する場合の使用時の注意について説明します。

(a) 使用できるJ2EEコンポーネントの違い

Oracle JDBC Thin DriverでOracleに接続する場合に使用できるJ2EEコンポーネントを次に示します。

  • サーブレット/JSP

  • Stateless Session Bean

  • Stateful Session Bean

  • Entity Bean(BMP)

  • Message-driven Bean

(b) 日本語文字コード変換の相違点とOracle JDBC Thin Driverでの文字化けを回避するための設定

JDBCドライバでは,データをデータベースに格納するとき,およびデータベースからデータを取り出すときに,Unicodeとデータベース格納コードとの間で適宜,文字コードを変換します。ここでは,Oracle JDBC Thin Driverを使用する場合に文字コード変換が実施される場所を次の図に示します。

図3‒17 Oracle JDBC Thin Driverを使用する場合に文字コード変換が実施される場所

[図データ]

図中の場所ごとに実行される文字コード変換について,次の表に示します。

表3‒28 Oracle JDBC Thin Driverを使用する場合に文字コード変換が実施される場所

場所

実施される内容

1

ネットワーク,ファイルなどの外部データをJ2EEサーバで読み込む時に,外部データコードからUnicodeに変換されます。

2

J2EEサーバで読み込んだデータをOracleサーバに格納する時に,UnicodeからUTF-8に変換されます。J2EEサーバ上のJDBCドライバ部分で実施されるコード変換です。

3

Oracleサーバのコンバータによって,UTF-8からデータベース格納コードへの変換が実施されます。Oracleサーバ上で実施されるコード変換です。

4

Oracleサーバのコンバータによって,データベース格納コードからUTF-8への変換が実施されます。

5

OracleサーバからJ2EEサーバが格納したデータを取得する時に,UTF-8からUnicodeに変換されます。

6

J2EEサーバで取得したデータをネットワークやファイルなどに書き出す時に,Unicodeから外部データコードに変換されます。

Oracle JDBC Thin Driverを使用する場合,JavaVMとOracleサーバのコンバータがサポートしているマッピング規則の相違から,文字化けが発生することがあります。文字化けは,外部データの文字コードとデータベース格納コードの組み合わせや,文字コード変換を行うコンバータの組み合わせによって発生します。

文字化けを回避するためには,外部データの文字コードと,データベース格納コードを,次に示す組み合わせで使用してください。

  • 外部データの文字コードがシフトJIS(CP932)の場合

    データベース格納コードに「AL32UTF8」または「JA16SJISTILDE」を指定してください。なお,データベース格納コードに「JA16SJIS」を指定した場合,「〜」の文字で文字化けが発生しますのでご注意ください。

  • 外部データの文字コードがSJISの場合

    データベース格納コードに「AL32UTF8」を指定してください。なお,データベース格納コードに「JA16SJIS」を指定した場合,「¢」「£」「¬」「‖」「−」で文字化けが発生しますのでご注意ください。

  • 外部データの文字コードがEUCの場合

    データベース格納コードに「AL32UTF8」を指定してください。なお,データベース格納コードに「JA16EUC」を指定した場合,「¢」「£」「¬」で文字化けが発生しますのでご注意ください。

(c) 専用サーバ接続

専用サーバ接続の場合,次の機能は使用できません。次の機能を使用する場合は共有サーバ接続にしてください。詳細については,オラクルのサポートサービスにお問い合わせください。

  • ステートメントキャンセル

  • クエリータイムアウト

(d) JTAトランザクション決着処理中のselect文の戻り値

XAトランザクションでOracleを利用した場合に,JTAトランザクションの決着処理中に,トランザクション内で更新処理を実施した複数のデータベースに対し,Oracleのselect文を発行すると,各select文の戻り値が異なることがあります。これは,Oracleの分散読取り一貫性の制限に起因しています。

(e) Oracle12c以降のJDBCドライバ使用時の設定

Oracle12c以降のJDBCドライバを使用する場合,以下のプロパティをusrconf.properties(J2EEサーバ用ユーザプロパティファイル)に設定してください。プロパティの詳細については,Oracleのドキュメントを参照してください。

  • oracle.jdbc.autoCommitSpecCompliant=false

(3) Oracle RACを使用する場合

(a) Oracle RACとの接続方法

Oracle RACへの接続は,Oracle用のDB Connectorが使用できます。接続できるトランザクションの種類はローカルトランザクションです。次のDB Connectorが使用できます。

  • DBConnector_Oracle_CP.rar

  • DBConnector_Oracle_CP_Cosminexus_RM.rar

負荷分散の設定については,Oracleのマニュアルを参照してください。

(b) データベース障害発生時と回復時の動作

データベース障害が発生した場合,Oracle RAC機能によって障害が発生したインスタンスが切り離され,残っているインスタンスで処理が続行されます。

アプリケーションサーバのコネクションプールを使用している場合,データベース回復時には次のどちらかの操作を実行してください。コネクションプールがクリアされ,これ以降のアクセスが正常に分散されます。

  • cjclearpoolコマンドの実行

  • J2EEサーバの再起動