BEA ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Server > WebLogic JDBC プログラマーズ ガイド > JDBC 接続のテストとトラブルシューティング |
WebLogic JDBC プログラマーズ ガイド
|
以下で、JDBC 接続のテスト、モニタ、およびトラブルシューティングの方法について説明します。
Administration Console では、各サブコンポーネント (接続プール、マルチプール、および DataSource) の接続パラメータをモニタするためのテーブルと統計を表示できます。
JDBCConnectionPoolRuntimeMBean を使用して、接続プールの統計にプログラムでアクセスすることもできます。『WebLogic Server パートナーズ ガイド』および WebLogic の Javadoc を参照してください。この MBean は、Administration Console に統計を取り込む API と同じものです。接続のモニタの詳細については、「WebLogic Server ドメインのモニタ」および「JDBC 接続の管理」を参照してください。
MBean の使い方については、『WebLogic JMX Service プログラマーズ ガイド』を参照してください。
WebLogic Server をインストールした後、utils.dbping BEA ユーティリティを使用して 2 層 JDBC データベース接続をテストします。utils.dbping ユーティリティを使用するには、JDBC ドライバのインストールを完了する必要があります。以下の作業を必ず行ってください。
utils.dbping ユーティリティを使用すると、Java とデータベースの間で接続が可能なことを確認できます。dbping ユーティリティは、WebLogic jDriver for Oracle などの WebLogic 2 層 JDBC ドライバを使用した 2 層接続 のテストにのみ使用します。
$ java utils.dbping DBMS user password DB
データベース ログインに使用する有効なユーザ名です。SQL Server では isql、Oracle では sqlplus で使用するものと同じ値と形式を使用します。
ユーザの有効なパスワード。isql、または sqlplus で使用するものと同じ値と形式を使用します。
データベースの名前。形式は、データベースとバージョンに応じて異なります。isql、または sqlplus で使用するものと同じ値と形式を使用します。MSSQLServer4 などの Type 4 ドライバの場合は、環境にアクセスできないので、サーバを見つけるには補足情報が必要です。
sqlplus で使用する同じ値を利用し、Java から WebLogic jDriver for Oracle 経由で Oracle に接続します。
SQLNet を使用しない (かつ ORACLE_HOME と ORACLE_SID が定義されている) 場合は、次の例に従います。
$ java utils.dbping ORACLE scott tiger
$ java utils.dbping ORACLE scott tiger TNS_alias
TNS_alias は、ローカルの tnsnames.ora ファイルで定義されているエリアスです。
Microsoft SQL Server (Type 4 ドライバ)
Java から WebLogic jDriver for Microsoft SQL Server 経由で Microsoft SQL Server に接続するには、user と password で isql の場合と同じ値を使用します。ただし、SQL Server を指定するには、SQL Server が動作しているコンピュータの名前と SQL Server がリスンしている TCP/IP ポートを指定します。コンピュータ名が mars で、リスン ポートが 1433 の SQL Server にログインするには、次のように入力します。
$ java utils.dbping MSSQLSERVER4 sa secret mars:1433
1433 は Microsoft SQL Server のデフォルト ポート番号なので、この例の「:1433」は省略してもかまいません。デフォルトでは、Microsoft SQL Server は TCP/IP 接続をリスンしないことがあります。DBA でリスンするようにコンフィグレーションできます。
WebLogic への接続をテストする場合は、WebLogic Server のログを調べてください。デフォルトでは、ログは次のフォーマットでファイルに記録されます。
domain¥server¥server.log
ここで domain はドメインのルート フォルダ、server はサーバの名前です。サーバ名は、フォルダ名やログ ファイル名で使用されます。
.dll のロードが失敗したことを示すエラー メッセージが表示された場合は、PATH で 32 ビット データベース関連の .dll を指定してください。
.so または .sl のロードが失敗したことを示すエラー メッセージが表示された場合は、LD_LIBRARY_PATH または SHLIB_PATH で 32 ビット データベース関連のファイルを指定してください。
WebLogic では、Oracle のコードセットがサポートされています。ただし、次のことに注意してください。
詳細については、「WebLogic jDriver for Oracle の使い方」の「コードセットのサポート」を参照してください。
使用するスレッディング モデルをチェックしてください。グリーン スレッドは、OCI で使用されるカーネル スレッドと衝突します。Oracle ドライバを使用する場合は、ネイティブ スレッドを使用することをお勧めします。ネイティブ スレッドの使用を指定するには、Java を起動するときに -native フラグを追加します。
UNIX では、グリーン スレッドとネイティブ スレッドという 2 つのスレッディング モデルを利用できます。詳細については、Sun の Web サイトで提供されている Solaris 環境用の JDK を参照してください。
使用しているスレッドの種類は、THREADS_TYPE 環境変数を調べることで確認できます。この変数が設定されていない場合は、Java の bin ディレクトリにあるシェル スクリプトを調べてください。
一部の問題は、各オペレーティング システムの JVM でのスレッドの実装に関連しています。すべての JVM で、オペレーティング システム固有のスレッドの問題が等しく適切に処理されるわけではありません。以下に、スレッド関連の問題を防止するためのヒントを紹介します。
$ echo $SHLIB_PATH
プログラムが効率的に実行されるように、Connection、Statement、ResultSet などの JDBC オブジェクトは必ず、finally ブロックで閉じるようにしてください。次に、一般的な例を示します。
try {
Driver d =
(Driver)Class.forName("weblogic.jdbc.oci.Driver").newInstance();
Connection conn = d.connect("jdbc:weblogic:oracle:myserver",
"scott", "tiger");
Statement stmt = conn.createStatement();
stmt.execute("select * from emp");
ResultSet rs = stmt.getResultSet();
// 処理を行う
}
catch (Exception e) {
// あらゆる例外を適切に処理する
}
finally {
try {rs.close();}
catch (Exception rse) {}
try {stmt.close();}
catch (Exception sse) {}
try {conn.close();
catch (Exception cse) {}
}
次のようなやり方も避けてください (破棄される JDBC オブジェクトが作成されます)。
//これは実行しない
stmt.executeQuery();
rs = stmt.getResultSet();
//代わりにこれを実行する
rs = stmt.executeQuery();
この例の最初の行では、失われ、すぐにガベージ コレクションされる結果セットが作成されます。
2 番目の行の動作は、どのサービス パックの WebLogic Server を実行しているのかによって異なります。 7.0SP2 より前の WebLogic Server では、オリジナル オブジェクトのクローンが返されていました (この場合もガベージ コレクションの対象になります)。 7.0SP2 以降の WebLogic Server ではオリジナル オブジェクトが返され、また、オブジェクトは使用されなくなるまでガベージ コレクションされません。
UNIX での共有ライブラリに関連する問題のトラブルシューティング
ネイティブの 2 層 JDBC ドライバをインストールするとき、パフォーマンス パックを使用するように WebLogic Server をコンフィグレーションするとき、または UNIX で BEA WebLogic Server を Web サーバとして設定するときには、システムで共有ライブラリまたは共有オブジェクト (WebLogic Server ソフトウェアと一緒に配布される) をインストールします。ここでは、予期される問題について説明し、それらの問題の解決策を提案します。
オペレーティング システムのローダでは、さまざまな場所でライブラリが検索されます。ローダの動作は、UNIX の種類によって異なります。以降の節では、Solaris と HP-UX について説明します。
共有ライブラリは、このマニュアルで説明されている手順に従って設定してください。実際に指定するパスは、Oracle クライアントのバージョンや Oracle サーバのバージョンなどによって異なります。詳細については、「WebLogic jDriver for Oracle のコンフィグレーション」を参照してください。
どのダイナミック ライブラリが実行ファイルによって使用されているのかを確認するには、ldd コマンドを実行します。このコマンドの出力が、ライブラリが見つからないことを示している場合は、次のようにして、ライブラリの位置を LD_LIBRARY_PATH 環境変数に追加します (C シェルまたは Bash シェルの場合)。
# setenv LD_LIBRARY_PATH weblogic_directory/lib/solaris/oci817_8
このようにして追加すれば、ld を実行してもライブラリの紛失は報告されないはずです。
HP-UX システムで WebLogic Server をインストールした後、発生する可能性が最も高い共有ライブラリの問題は、不適切なファイル パーミッションの設定です。WebLogic Server をインストールした後は、chmod コマンドを使用して共有ライブラリのパーミッションを適切に設定してください。HP-UX 11.0 で適切なパーミッションを設定するには、次のように入力します。
% cd WL_HOME/lib/hpux11/oci817_8
% chmod 755 *.sl
ファイル パーミッションを設定した後に共有ライブラリをロードできない場合は、ライブラリの位置を特定することに問題があることが考えられます。その場合はまず、次のようにして、WL_HOME/server/lib/hpux11 が SHLIB_PATH 環境変数に設定されていることを確認してください。
% echo $SHLIB_PATH
そのディレクトリがない場合は、次のようにして追加してください。
# setenv SHLIB_PATH WL_HOME/server/lib/hpux11:$SHLIB_PATH
あるいは、WebLogic Server 配布キットにある .sl ファイルを SHLIB_PATH 変数で既に設定されているディレクトリへコピー (またはリンク) してください。
それでも問題が解決しない場合は、chatr コマンドを使用して、アプリケーションが SHLIB_PATH 環境変数のディレクトリを検索するように指定してください。+s enabled オプションを使用すると、SHLIB_PATH 変数を検索するようにアプリケーションが設定されます。次に、このコマンドの例を示します。この例は、HP-UX 11.0 の WebLogic jDriver for Oracle 共有ライブラリで実行します。
# cd weblogic_directory/lib/hpux11
# chatr +s enable libweblogicoci39.sl
このコマンドの詳細については、chatr のマニュアル ページを参照してください。
Oracle 9 を使用している場合、SHLIB_PATH に適切なパスが含まれていないことが原因で共有ライブラリの問題が発生する場合もあります。SHLIB_PATH には、ドライバ (oci901_8) へのパスと、ベンダ提供のライブラリ (lib32) へのパスが含まれている必要があります。たとえば、パスは次のようになります。
export SHLIB_PATH=
$WL_HOME/server/lib/hpux11/oci901_8:$ORACLE_HOME/lib32:$SHLIB_PATH
パスに Oracle 8.1.7 ライブラリを含めることはできません。含まれているとクラッシュします。詳細については、「WebLogic jDriver for Oracle の使用環境の設定」を参照してください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |