DBサーバでPL/SQL(ストアドパッケージ)をリコンパイルを実施した後、
WEB-APサーバからJDBCを使用してストアドパッケージ呼出し時に、
必ず初回だけは正しく呼び出せずにエラーとなります。
WEB-APサーバはApache Tomcat 8/JDK1.8を使用、
DBサーバはOracle11gです。
エラーは以下
### Error querying database. Cause: java.sql.SQLException: ORA-04068: パッケージの既存状態は廃棄されました。 ORA-04061: package body "PKGXXXXX"の既存状態は無効になりました。 ORA-04065: 実行されませんでした。package body "PKGXXXXX"を変更または削除しています ORA-06508: PL/SQL: コールしているプログラム単位が見つかりませんでした: "PKGXXXXX"
上記エラー発生後、同じ操作を実施すると
2回目以降は同エラーは発生しなくなります。
ストアドパッケージのリコンパイルより前に
WEB-APサーバ側で保持されているJDBC接続プールに
何等かの情報が古いまま保持されているからかと思ったのですが
具体的にはどのようなことが起きているのでしょうか。
また、本事象を回避をするためには、
ストアドパッケージのコンパイル後必ず
JDBC接続プールクリアの操作が必要となるのでしょうか。
回答3件
あなたの回答
tips
プレビュー