首页 > Linux操作系统 > Linux操作系统 > cursor_sharing
1. 正常情况下 如果启用了similar ,sql语句会强制使用绑定变量
session 1
SQL>alter session set cursor_sharing=similar;
会话已更改。
SQL>select * from test where id=1;
ID
----------
1
SQL>select * from test where id=2;
ID
----------
2
session 2
SQL>select sql_text,hash_value from v$sqlarea where sql_text like 'select * fro
m test where id%' order by first_load_time desc;
SQL_TEXT
--------------------------------------------------------------------------------
HASH_VALUE
----------
select * from test where id=:"SYS_B_0"
345325898
2.如果使用了hint CURSOR_SHARING_EXACT,将强制不使用绑定变量
session 1
SQL>select /*+ CURSOR_SHARING_EXACT */ * from test where id=1;
ID
----------
1
SQL>select /*+ CURSOR_SHARING_EXACT */ * from test where id=2;
ID
----------
2
SQL>select /*+ CURSOR_SHARING_EXACT */ * from test where id=3;
ID
----------
3
SQL>
session 2
SQL>select sql_text,hash_value from v$sqlarea where sql_text like 'select /*+ C
URSOR_SHARING_EXACT */ * from test where id%' order by first_load_time desc;
SQL_TEXT
--------------------------------------------------------------------------------
HASH_VALUE
----------
select /*+ CURSOR_SHARING_EXACT */ * from test where id=3
1339598962
select /*+ CURSOR_SHARING_EXACT */ * from test where id=2
1720851874
select /*+ CURSOR_SHARING_EXACT */ * from test where id=1
3085093526
另外,在cursor_sharing=force的情况下,使用该hints也会强制不使用绑定变量。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/104446/viewspace-548864/ ,如需转载,请注明出处,否则将追究法律责任。