16.02.2014 Views

WebOTX V6 JDBCアプリケーションのトラブルシューティング(JDBC ...

WebOTX V6 JDBCアプリケーションのトラブルシューティング(JDBC ...

WebOTX V6 JDBCアプリケーションのトラブルシューティング(JDBC ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!