小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Oracleでカーソル共有(CURSOR_SHARING)の設定値を確認する

OracleでCURSOR_SHARINGの設定値を確認する
connect sys/oracle as sysdba;
SHOW PARAMETER CURSOR_SHARING


CURSOR_SHARINGの設定値を変更する
--システムレベルの変更
ALTER SYSTEM SET cursor_sharing = EXACT;
--セッションレベルの変更
ALTER SESSION SET cursor_sharing = EXACT;
CURSOR_SHARINGの値の意味
  • FORCE
    • リテラルが違い実行計画が変わっても、意味的には同じSQL文であれば、カーソルが共有されます。
  • SIMILAR
    • リテラルの違いが実行計画に影響しなければ、カーソルが共有されます。
  • EXACT
    • 完全に一致するSQL文のみ、カーソルが共有されます。

ORACLE/オラクル・初期化パラメータ(CURSOR_SHARING) はてなブックマーク - ORACLE/オラクル・初期化パラメータ(CURSOR_SHARING)

SIMILARは11gからは削除

SIMILARは11gからは削除されています。

リテラルをバインド変数化するための設定値として SIMILAR と FORCE があるという話を出しましたが、この SIMILAR というヤツはなかなかの曲者で、実際に Oracle 10g には存在していますが 11g からは削除(実際には、もうちょっと賢い設定値が追加)されています。
ヒストグラム統計と bind peek と CURSOR_SHARING について - 理系学生日記 はてなブックマーク - ヒストグラム統計と bind peek と CURSOR_SHARING について - 理系学生日記