sql >> データベース >  >> RDS >> Oracle

Tomcatはキャッシュされたバージョンのpl/sqlモジュールを使用しますか?

    この問題はJDBC接続プールにあり、Tomcatだけでなく、JDBC接続プールを使用するすべてのアプリサーバーで発生する問題です。接続プールは、次の要求に備えて、プール内で開いている多数の接続を維持します。 PL / SQLパッケージが接続によって参照され、再コンパイルされた場合、そのパッケージを次に呼び出すと、ORA-06508エラーが発生します。これは、直接呼び出したパッケージだけでなく、コールスタック内の任意の場所のパッケージに影響します。

    これを解決するために、一部のアプリサーバー(Weblogicなど)には、定期的に呼び出されるテストメソッドがあります。テストが失敗した場合、接続はプールから削除されるか、何らかの方法で更新されます。 Tomcatのメカニズムがわかりません。

    これに対処する別の方法は、JDBC呼び出しの最初のメソッド呼び出しとしてdbms_session.reset_packageを呼び出すことです。これにより、セッション中のパッケージの状態がクリアされます。このアプローチは、パフォーマンスのオーバーヘッドがあり、パッケージスコープの変数がリセットされるため、パッケージの初期化ブロックを再度呼び出す必要があるため、お勧めしません。これは、別のパフォーマンスの低下です。

    問題が発生し、不良接続をドロップする方法がない場合は、プール内のすべての接続で同じ例外が発生するため、接続プール全体をリセットする必要があります。



    1. Codeigniterの移行ライブラリでトリガーを作成する方法

    2. ピボットを解除して列リストを自動的に取得する(oracle 11g)

    3. OR演算子SQLServerでの短絡

    4. 任意のコンピューターからPostgresqlへのアクセスを許可する