ORACLE中Cursor_sharing参数详解

一、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;

 

 

请使用浏览器的分享功能分享到微信等