Oracle Database 11gリリース11.2.0.2.0を使用しており、ociクライアントキャッシュを有効にしようとしています。動作していません。それを有効にするために私が行った構成の変更は-
- サーバー側パラメーター「client_result_cache_size」を10485760(10 MB)に設定して、クライアント結果セットのキャッシュを有効にしました
- 上記のパラメータを設定した後、Oracleインスタンスを再起動しました
- ステートメントALTERTABLEemp RESULT_CACHE(MODE FORCE)を実行して、テーブルの注釈を追加しました。後でユーザーテーブルをクエリして、アノテーションが適用されていることを確認しました。
- クライアント側、つまりJDBCドライバーでステートメントキャッシングを有効にしました。
- プリペアドステートメントを使用してクエリを実行し、ステートメントのキャッシュが開始されるようにしました。ドライバーログから、最初のクエリの後の後続のクエリの実行で同じステートメントハンドルが使用されていることを確認しました。
プリペアドステートメントの選択クエリを3回実行した後、CLIENT_RESULT_CACHE_STATS$ビューを確認しました。しかし、このビューでは行が表示されませんでした。
トラブルシューティングの一環として、/ * + RESULT_CACHE * /ヒントをクエリに追加しようとしましたが、ビューで結果が得られませんでした。
プロファイラー(flextracer)から、selectクエリの結果セットをフェッチするためにサーバーに対してOCI呼び出しがまだ行われていることがわかりました。また、SQLトレースを有効にすると、tkprofから、クエリを実行するたびにサーバーでフェッチされる行数が増加し、OCIでのクライアント結果セットのキャッシュが機能していないことがわかりました。
見逃したステップはありますか?
前もって感謝します。