一、Cursor_sharing 简介
这个参数是用来告诉 Oracle 在什么情况下可以共享游标,即 SQL 重用。
Cursor_sharing 参数有 3 个值可以设置:
1) 、 EXACT :通常来说, exact 值是 Oracle 推荐的,也是默认的,它要求 SQL 语句在完全相同时才会重用,否则会被重新执行硬解析操作。
2) 、 SIMILAR : similar 是在 Oracle 认为某条 SQL 语句的谓词条件可能会影响到它的执行计划时,才会被重新分析,否则将重用 SQL 。
3) 、 FORCE : force 是在任何情况下,无条件重用 SQL 。
二、会话级别实现Cursor_sharing 参数设置
会话一:
SQL> show parameter cursor_sharing
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cursor_sharing string EXACT
SQL> alter session set cursor_sharing='force';
Session altered.
SQL> show parameter cursor_sharing
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cursor_sharing string force
SQL>
SQL> exit
会话二:
[ora11203@yikuer ~]$ sqlplus / as sysdba
SQL> show parameter cursor_sharing
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cursor_sharing string EXACT
三、使用hint 方式实现Cursor_sharing 参数设置


使用tkprof 进行分析


总结
会话级别和 hint 均可实现 Cursor_sharing 参数设置
方法分别是:
会话级别: alter session set cursor_sharing='force';
加 hint : select /*+ CURSOR_SHARING_EXACT */ count(*) from test123.MC_ASH_20201203;