WebOTX V6 JDBCアプリケーションã®トラブルシューティング(JDBC ...
WebOTX V6 JDBCアプリケーションã®トラブルシューティング(JDBC ...
WebOTX V6 JDBCアプリケーションã®トラブルシューティング(JDBC ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>WebOTX</strong> <strong>V6</strong> JDBC アプリケーション<br />
のトラブルシューティング<br />
(JDBC データソース)<br />
2006 年 12 月 初 版<br />
改 版 履 歴<br />
i
目 次<br />
1 はじめに ........................................................................................................................1<br />
2 障 害 の 切 り 分 け 方 法 ......................................................................................................1<br />
3 障 害 発 生 時 の 対 処 ..........................................................................................................2<br />
3.1 Oracleデータベースリンク 利 用 時 のトランザクション 障 害 への 対 応 ....................2<br />
3.2 Oracleデータベースリンクの 再 接 続 障 害 への 対 応 .................................................4<br />
3.3 JDBCデータソースの 設 定 変 更 が 効 かない 現 象 への 対 応 .......................................6<br />
ii
1 はじめに<br />
本 資 料 では、<strong>WebOTX</strong> の JDBC アプリケーションで 発 生 する 障 害 の 中 から、 比 較 的 発 生<br />
しやすい 障 害 への 対 処 方 法 を、 最 近 の 事 例 をもとに 説 明 しています。<br />
なお 本 資 料 は <strong>WebOTX</strong> Ver6 を 対 象 としています。Ver5 以 前 には 適 用 できませんので 注<br />
意 してください。<br />
2 障 害 の 切 り 分 け 方 法<br />
<strong>WebOTX</strong> では、JDBC ドライバの 実 装 を 提 供 していませんので、データベースベンダや<br />
JDBC ドライバベンダが 提 供 する JDBC ドライバをご 利 用 いただく 必 要 があります。JDBC<br />
アプリケーションで 障 害 が 発 生 した 場 合 には、JDBC ドライバに 起 因 する 問 題 なのか、<br />
<strong>WebOTX</strong> や JDBC アプリケーションの 問 題 なのかを 切 り 分 けたうえで、 原 因 を 究 明 してい<br />
ただく 必 要 があります。<br />
<strong>WebOTX</strong> の JDBC コネクションプール 機 能 である JDBC データソースでは、JDBC ドラ<br />
イバから 受 け 取 った java.sql.SQLException をそのままアプリケーションに 返 却 します。<br />
<strong>WebOTX</strong> の 内 部 で 障 害 が 発 生 した 場 合 には、 次 の 文 字 列 で 始 まるメッセージを 格 納 した<br />
java.sql.SQLException を 返 却 します。<br />
“[NEC][WOJDBC]”<br />
アプリケーションが 上 記 の 文 字 列 を 含 まない java.sql.SQLException を 受 け 取 った 場 合<br />
は、JDBC ドライバのオンラインマニュアルを 参 照 していただくか、または、JDBC ドラ<br />
イバのサポート 部 門 にお 問 い 合 わせください。<br />
本 書 で 説 明 するログファイルは、それぞれ 次 の 場 所 に 出 力 されます。<br />
・ server.log( 標 準 出 力 用 )<br />
/domains/ドメイン 名 /logs/server.log<br />
・ webotx_agent.log(ドメインのエージェント 用 )<br />
/domains/ドメイン 名 /logs/webotx_agent.log<br />
・ プロセスグループのログファイル(Enterprise Edition, Standard Edition のみ)<br />
/domains/ドメイン 名 /logs/tpsystem<br />
///..log<br />
1
3 障 害 発 生 時 の 対 処<br />
3.1 Oracle データベースリンク 利 用 時 のトランザクション 障 害 への 対 応<br />
事 象 説 明<br />
J2EE のトランザクションに 参 加 するアプリケーションからデータベースリンクを 利 用<br />
する SQL 命 令 を 実 行 した 際 に、java.sql.SQLException が 発 生 します。<br />
状 況 の 確 認 方 法<br />
アプリケーションでログ 出 力 を 抑 止 していなければ、 以 下 のいずれかのログファイルに、<br />
次 のメッセージが 出 力 されます。<br />
【ログファイル】アプリケーションのログファイル、server.log、webotx_agent.log、<br />
プロセスグループのログファイル。<br />
【メッセージ】 ORA-24777: 移 行 できないデータベースリンクは 使 用 できません<br />
復 旧 方 法<br />
この 障 害 は、Oracle の 仕 様 ( 制 限 事 項 )で 発 生 します。JDBC データソースの 属 性 のうち、<br />
データソースの 種 類 [dataSourceType]を JDBC API[JDBC]に 変 更 することで 回 避 すること<br />
ができます。 変 更 は、 次 の 二 つの 方 法 のいずれかで 行 います。<br />
・ 統 合 運 用 管 理 ツールを 使 用 する 場 合 、 対 象 の「JDBC データソース」を 選 択 し、 右<br />
側 の 属 性 画 面 の 一 般 タブで、データソースの 種 類 として「JDBC API」を 選 択 します。<br />
2
・ 運 用 管 理 コマンドを 使 用 する 場 合 、 次 のコマンドを 実 行 します。<br />
otxadmin> set server.resources.jdbc-datasource..dataSourceType=JDBC<br />
なお、 上 記 の 回 避 を 行 う 場 合 は、2フェーズコミットを 行 う 上 で 以 下 の 制 限 事 項 があり<br />
ますので、ご 注 意 ください。<br />
[6.3 より 前 のバージョン]<br />
JDBC API を 利 用 する JDBC データソースを2フェーズコミットのトランザクション<br />
内 で 利 用 することはできません。データソースの 種 類 を 変 更 した JDBC データソースを<br />
別 のトランザクション 内 で 利 用 してください。<br />
[6.3 以 降 のバージョン]<br />
JDBC API を 利 用 する 複 数 の JDBC データソースを、2フェーズコミットのトランザ<br />
クション 内 で、 同 時 に 利 用 することはできません。1つのデータソースの 設 定 を 変 更 す<br />
る 場 合 には 問 題 ありませんが、 複 数 のデータソースの 設 定 を 変 更 する 必 要 がある 場 合 は、<br />
それぞれを 別 のトランザクション 内 で 利 用 してください。<br />
3
3.2 Oracle データベースリンクの 再 接 続 障 害 への 対 応<br />
事 象 説 明<br />
データベースリンクのリンク 先 のデータベースサーバを 再 起 動 後 、データベースリンク<br />
を 使 用 する SQL 命 令 を 実 行 すると、java.sql.SQLException が 発 生 し 続 けます。<br />
状 況 の 確 認 方 法<br />
アプリケーションでログ 出 力 を 抑 止 していなければ、 以 下 のいずれかのログファイルに、<br />
次 のメッセージが 出 力 されます。<br />
【ログファイル】アプリケーションのログファイル、server.log、webotx_agent.log、<br />
プロセスグループのログファイル。<br />
【メッセージ】 ORA-2068やORA-3113、ORA-24778といったOracleのエラー 番 号<br />
復 旧 方 法<br />
a) 運 用 操 作 によるJDBCコネクションの 切 断<br />
復 旧 するためには、JDBCデータソース 内 にプール 管 理 している 全 てのJDBCコネクシ<br />
ョンを 切 断 する 必 要 があります。データベースリンク 先 のデータベースサーバを 再 起 動<br />
する 度 に、 次 の 操 作 またはコマンドを、ドメイン 毎 に 実 行 してください。<br />
・ 統 合 運 用 管 理 ツールを 使 用 する 場 合 、「JDBC データソース」を 選 択 し、 右 クリック<br />
メニューから、「すべての JDBC データソースでプールされたコネクションの 切 断 」<br />
を 実 行 してください。<br />
4
・ 運 用 管 理 コマンドを 使 用 する 場 合 、 次 のコマンドを 実 行 します。<br />
otxadmin> reset-all-jdbc-datasources<br />
b) データベースサーバの 状 態 監 視 機 能 の 利 用<br />
データベースサーバの 監 視 コマンド[checkServerCommand]として、データベースリ<br />
ンクを 使 用 するSQL 命 令 を 指 定 してください。ただし、 性 能 が 若 干 低 下 する 可 能 性 があ<br />
る 点 にご 注 意 ください。<br />
・ 統 合 運 用 管 理 ツールを 使 用 する 場 合 、 対 象 の JDBC データソースを 選 択 し、 右 側 の<br />
属 性 画 面 の 拡 張 タブで、データベースサーバの 状 態 監 視 オプション<br />
[checkServerOption]でオプションを 選 択 し、データベースサーバの 状 態 監 視 コマン<br />
ド[checkServerCommand]で、 監 視 を 行 う SQL 命 令 を 指 定 します。<br />
・ 運 用 管 理 コマンドを 使 用 する 場 合 、 次 のコマンドを 実 行 します。<br />
otxadmin> set server.resources.jdbc-datasource..checkServerOption=method<br />
otxadmin> set server.resources.jdbc-datasource..checkServerCommand="select * from dual"<br />
5
3.3 JDBC データソースの 設 定 変 更 が 効 かない 現 象 への 対 応<br />
事 象 説 明<br />
domain.xml の JDBC データソースの 定 義 をエディタ 等 で 修 正 した 場 合 、 変 更 した 値 が<br />
JDBC データソースの 動 作 に 反 映 されません。<br />
状 況 の 確 認 方 法<br />
domain.xmlの 内 容 と、 次 のディレクトリに 格 納 されているプロパティファイルの 内 容 を<br />
比 較 して、 相 違 が 無 いか 確 認 してください。JDBCデータソースの 動 作 時 に 使 用 される 設 定<br />
値 は、 次 のディレクトリ 配 下 にあるプロパティファイルに 格 納 されています。<br />
/domains/ドメイン 名 /config/jndisp/datasources<br />
domain.xml とプロパティファイルの 内 容 ( 例 )は、 次 の 通 りです。 同 じ 名 前 の 値 を 比 較<br />
してください。ただし、プロパティファイルの poolCount は、minPoolSize に 読 み 替 えて<br />
ください。<br />
プロパティファイルが 複 数 存 在 する 場 合 は、jndiName の 値 を 確 認 して、 確 認 すべきプロ<br />
パティファイルを 特 定 してください。<br />
<br />
<br />
<br />
<br />
:<br />
【1.properties】<br />
#Wed Dec 01 12:00:00 JST 2006<br />
poolCount=4<br />
dataSourceName=jdbc¥:oracle¥:thin¥:@localhost¥:1521¥:orcl<br />
jndiName=jdbc/Oracle<br />
jdbcMajorVersion=3<br />
useStaticPool=true<br />
useJTA=true<br />
userName=scott<br />
password=tiger<br />
dataSourceType=JDBCEX_Oracle<br />
6
復 旧 方 法<br />
設 定 を 変 更 する 時 は、JNDI サーバへの 登 録 処 理 を 行 う 必 要 があるため、 必 ず、 統 合 運 用<br />
管 理 ツールか、 運 用 管 理 コマンドの set コマンドで 変 更 してください。ただし、 同 じ 値 を 再<br />
設 定 しても JDBC データソースの 動 作 には 反 映 されません。いったん JDBC データソース<br />
の 設 定 値 を 違 う 値 に 変 更 後 、 変 更 しようとしていた 値 を 設 定 し 直 してください。<br />
例 えば、domain.xml の minPoolSize を 10 に 変 更 していた 場 合 、 運 用 管 理 コマンドで、<br />
次 のように、 違 う 値 (12)をいったん 設 定 した 後 で、 変 更 しようとしていた 値 (10)を 設<br />
定 し 直 してください。<br />
otxadmin> set server.resources.jdbc-datasource..minPoolSize=12<br />
otxadmin> set server.resources.jdbc-datasource..minPoolSize=10<br />
7