Oracleサーバが起動している状況でエラーが繰り返し出力される場合、マニュアルのインストールガイド(V9以前ではセットアップガイド)に記載されているデータベースを利用する場合の準備作業が行われていないことが原因と推測します。次の確認を行ってください。
DBA_PENDING_TRANSACTIONSビューの参照:
> select * from sys.dba_pending_transactions;
権限付与が正しく行われていない場合には、次のエラーが発生します(英語メッセージの場合があります)。
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
トレースファイルへのタイムスタンプ書き出し:
> exec sys.dbms_system.ksdddt;
権限付与が正しく行われていない場合には、次のエラーが発生します(英語メッセージの場合があります)。
ORA-06550: 行1、列7:
PLS-00201: 識別子SYS.DBMS_SYSTEMを宣言してください
ORA-06550: 行1、列7:
PL/SQL: Statement ignored
権限付与が正しく行われている場合には、エラーが発生しません。権限が付与されていない場合、sqlplus 等で、sys アカウントで次のコマンドを実行し、トランザクションを実行するユーザアカウントに対して権限を付与してください ("scott"の部分には実際に使用するユーザアカウントを記述してください)。
> grant select on dba_pending_transactions to scott;
> grant execute on dbms_system to scott;
詳細は、マニュアルの次の内容をご確認ください。
V6 [運用編 > 障害解析 > JDBCデータソースでの障害への対応 > Oracle でのトランザクションリカバリ障害への対応]
V7~V8.2 [運用編 > 障害解析 > トラブルシューティング(障害解析) > 機能別 > JDBCデータソース > Oracle でのトランザクションリカバリ障害への対応 ]
V8.3~V9[トラブルシューティングガイド > 障害解析 > 機能別リンク > JDBCデータソース > Oracle でのトランザクションリカバリ障害への対応 ]
V10以降 [トラブルシューティング > 障害解析 > 機能別リンク > JDBCデータソース > Oracle でのトランザクションリカバリ障害への対応 ]
または、EJBのコンテナ管理のトランザクション制御や、Bean管理のトランザクション制御を行なわないのであれば、V7以前の場合はJDBCデータソースのuseJTA属性をfalseに変更した上で(V8以降の場合は不要です)、次の手順でリカバリ対象のリソースの定義を削除してください。リカバリ処理は実行されなくなり、例外も発生しなくなります。
1)管理コマンドを起動し、ログインしてください。
otxadmin> login --user admin --password adminadmin
2)定義の一覧をご確認ください。
otxadmin> list server.transactionservice.resources.*
server.transactionservice.resources.jdbc-resource.jdbc/Oracle
3)表示されたリソース定義を削除してください。
otxadmin> delete-ts-jdbc-resource jdbc/Oracle
Command delete-ts-jdbc-resource executed successfully.
なお、V6.50.02より前のバージョンでは、イベントログ(Windows)やsyslog(Unix)ではなく、次のTransactionサービスのトレースファイルに"XA function has failed"のエラーが出力されます。
<WebOTXインストールディレクトリ>/domains/domain名/logs/TS/rcs.trc
内容を確認するためには、次のトレースビューアを利用してください。
Unix : <WebOTXインストールディレクトリ>/TS/sbin/trcview
Windows : <WebOTXインストールディレクトリ>\TS\bin\trcview.exe
Unixでは、trcviewコマンドの引数に -x -l e トレースファイル名を指定してください。
Windowsでは、トレースビューアのファイルメニューからトレースファイルを開き、赤いエラーの行をダブルクリックして内容を確認してください。
権限を付与しても解決しない場合は、Oracleの必要なパッケージがインストールされていない可能性があります。sqlplus 等で次のコマンドを実行し、インストールされているかどうかを確認してください。
> desc JAVA_XA
JAVA_XAパッケージが存在しない場合、sqlplus 等で下記のストアドプロシージャを実行して、JAVA_XA パッケージの再構築を行ってください。再構築方法の詳細については、必ず、Oracle のマニュアルで確認してください。initjvm.sqlが見当たらない場合は、Oracle JVMを追加インストールしてください。
${ORACLE_HOME}/javavm/install/initjvm.sql
それでも解決しない場合、JDBCドライバとサーバのバージョンが一致しているかどうかをご確認ください。Oracle XEで障害が発生していて解決しない場合は、正式サポートが受けられるサポート対象の製品版をご利用ください。
【対象製品】Application Server
【確認済みのバージョン】V6以降
【確認済みのエディション】 すべて
【確認済みの対象OS】すべて
【確認済みのJavaバージョン】すべて
【コンポーネント】JDBCデータソース
【カテゴリー】開発/設計(性能チューニング)