本文转自:http://www.cnblogs.com/Richardzhu/archive/2013/01/21/2869837.html

一、Cursor_sharing简介:

这个参数是用来告诉Oracle在什么情况下可以共享游标,即SQL重用。

Cursor_sharing参数有3个值可以设置:

1)、EXACT:通常来说,exact值是Oracle推荐的,也是默认的,它要求SQL语句在完全相同时才会重用,否则会被重新执行硬解析操作。

2)、SIMILAR:similar是在Oracle认为某条SQL语句的谓词条件可能会影响到它的执行计划时,才会被重新分析,否则将重用SQL。

3)、FORCE:force是在任何情况下,无条件重用SQL。

备注:上面所说的SQL重用,仅仅是指谓词条件不同的SQL语句,实际上这样的SQL基本上都在执行同样的业务操作。

二、在Cursor_sharing参数值不同的时对SQL的影响:

2.1 创建实验环境:

 ----首先创建一张jack表----  1 SQL> create table jack (id int,name varchar2(10));  2  3 Table created.  4  ----产生一些数据---- 5 SQL> insert into jack values(1,'aa');  6  7 1 row created.  8  9 SQL> insert into jack values(2,'bb'); 10 11 1 row created. 12 13 SQL> insert into jack values(3,'cc'); 14 15 1 row created. 16 17 SQL> insert into jack values(4,'dd'); 18 19 1 row created. 20 21 SQL> commit; 22 23 Commit complete. 24 25 SQL> select * from jack; 26 27  ID NAME 28 ---------- ---------- 29 1 aa 30 2 bb 31 3 cc 32 4 dd 33  ----创建下面实验将要用到的三张表---- 34 SQL> create table jack_exact as select * from jack; 35 36 Table created. 37 38 SQL> create table jack_similar as select * from jack; 39 40 Table created. 41 42 SQL> create table jack_force as select * from jack; 43 44 Table created. 45  ----查看该session的trace文件的路径---- 46 SQL> @/u01/scripts/showtrace 47 48 trace_file_name 49 -------------------------------------------------------------------------------- 50 /u01/app/oracle/diag/rdbms/yft/yft/trace/yft_ora_5329.trc

  2.2 cursor_sharing=exact的情况:

  ----将cursor_sharing设置为exact----   1 SQL> alter session set cursor_sharing=exact;  2  3 Session altered.  4  5 SQL> alter session set sql_trace=true;  6  7 Session altered.  8  9 SQL> select * from jack_exact where id=1;  10  11  ID NAME  12 ---------- ----------  13 1 aa  14  15 SQL> select * from jack_exact where id=3;  16  17  ID NAME  18 ---------- ----------  19 3 cc  20  21 SQL> select * from jack_exact where id=1;  22  23  ID NAME  24 ---------- ----------  25 1 aa  26  27 SQL> alter session set sql_trace=false;  28  29 Session altered.  30  ----从下面的查询可以看出执行了两次硬解析---- 31 SQL> select sql_text from v$sql where sql_text like 'select * from jack_exact where%';  32  33 SQL_TEXT  34 --------------------------------------------------------------------------------  35 select * from jack_exact where id=1  36 select * from jack_exact where id=3  37  ----查看trace文件,通过tkprof工具 [oracle@yft ~]$ tkprof /u01/app/oracle/diag/rdbms/yft/yft/trace/yft_ora_5329.trc out.txt aggregate=no sys=no---- 38 SQL ID: fnggytkynxz04  39 Plan Hash: 4127630146  40 select *  41 from  42 jack_exact where id=1  43  44  45 call count cpu elapsed disk query current rows  46 ------- ------ -------- ---------- ---------- ---------- ---------- ----------  47 Parse 1 0.00 0.00 0 1 0 0  48 Execute 1 0.00 0.00 0 0 0 0  49 Fetch 2 0.00 0.00 0 4 0 1  50 ------- ------ -------- ---------- ---------- ---------- ---------- ----------  51 total 4 0.00 0.00 0 5 0 1  52  53 Misses in library cache during parse: 1 ---id=1,执行一次硬解析  54 Optimizer mode: ALL_ROWS  55 Parsing user id: 105  56  57 Rows Row Source Operation  58 ------- ---------------------------------------------------  59 1 TABLE ACCESS FULL JACK_EXACT (cr=4 pr=0 pw=0 time=0 us cost=3 size=20 card=1)  60  61 ********************************************************************************  62  63 SQL ID: 1n0paamkf7sup  64 Plan Hash: 4127630146  65 select *  66 from  67 jack_exact where id=3  68  69  70 call count cpu elapsed disk query current rows  71 ------- ------ -------- ---------- ---------- ---------- ---------- ----------  72 Parse 1 0.00 

转载于:https://www.cnblogs.com/freeliver54/p/6638720.html

[转]Oracle 初始化参数之cursor_sharing相关推荐

  1. ORACLE初始化参数文件概述

    ORACLE初始化参数文件概述 在9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新增了服务器参数文件,称为spfile,它是二进制格式的.这两种参数文件都是用来存储 ...

  2. ORACLE初始化参数文件详细文档

    注明:本文不是介绍ORACLE初始化参数的具体配置及调优,本文仅介绍初始化参数配置文件PFILE和SPFILE的使用及相关内容说明. 1.简介 在9i之前,参数文件只有一种,它是文本格式的,称为pfi ...

  3. oracle的存储设置默认参数,oracle初始化参数设置

    该Oracle教程将告诉诸位学习Oracle的朋友:oracle初始化参数设置. ALTER DATABASE DATAFILEd:\ORANT\DATABASE\USER1ORCL.ORA RESI ...

  4. oracle数据库初始化参数分类,oracle初始化参数设置

    oracle初始化参数设置 时间:2007-11-09  来源:不详  作者:迈克DB ALTER DATABASE DATAFILE'd:ORANTDATABASEUSER1ORCL.ORA' RE ...

  5. oracle -- Oracle初始化参数详解

    oracle -- Oracle初始化参数详解 Oracle数据库系统根据初始化参数文件init.ora中设置的参数来配置自身的启动,每个实例在启动之前,首先读取这些参数文件中设置的不同参数. Ora ...

  6. oracle 从pflie启动,oracle初始化参数文件管理

    oracle实例是指运行状态下的oracle软件,是由内存结构跟一些进程结构组成的,主要实现数据库的访问跟控制功能,是oracle的核心. 初始化参数文件是oracle实例运行所需要的参数配置文件,o ...

  7. Oracle 初始化参数文件pfile和spfile

    pfile和spfile差额 pfile :Oracle 9i之前.ORACLE使用我们一直PFILE存储的初始化参数,,能够在操作系统级别改动. 当spfile文件改动出现错误导致oracle无法启 ...

  8. Oracle 初始化参数详解

    Oracle数据库系统根据初始化参数文件init.ora中设置的参数来配置自身的启动,每个实例在启动之前,首先读取这些参数文件中设置的不同参数. Oracle系统中的参数,根据系统使用情况可以简单分为 ...

  9. Oracle初始化参数之memory_target

    一.引言: Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整: Oracle 10g引入sga_target,可以自动对SGA进行调整: Oracle 11g则 ...

最新文章

  1. GDB 调试 Mysql 实战(二)GDB 调试打印
  2. 2020身高体重标准表儿童_2020年儿童标准身高体重表发布,对比看看,你家孩子达标了吗?...
  3. C++链式队列基本操作
  4. 微软服务器sql server,解析:微软SQL Server 2008特性和功能
  5. 性能调优之Java系统级性能监控及优化
  6. 九种食物帮你赶走忧郁
  7. linux每天进步一点点-7月3日
  8. android 放大镜
  9. 20165320 第二周学习总结
  10. vim末行模式下相关操作+配置文件
  11. java正则表达式面试_【Java面试宝典】正则表达式
  12. 在线象棋游戏php网站源码分享
  13. Uncode-DAL 1.0.18 发布,Java 通用数据访问层
  14. java程序一维数组能被5整除,JAVA鏈熸湯璇曢闆?鍚瓟妗? - 鐧惧害鏂囧簱
  15. 怎么下载老版本android,剪映旧版下载
  16. 今天开通了CNSD博客
  17. Oracle 日期时间查询
  18. 两个博士读完,学术能力翻一倍?Nature专访三位「双料博士」
  19. 电池管理系统(BMS)软硬件介绍
  20. 10万亿的新房市场,为何没有一家现象级的电商?

热门文章

  1. python基础之python中if __name__ == '__main__': 的解析
  2. C++ new/delete、malloc/free
  3. OpenStack在线迁移
  4. U3D-LookAt插值动画
  5. 记一次SQL Server2005导入Oracle10G的折腾过程【供多种数据库导入导出数据的C#程序源码参考】...
  6. 《Microsoft Sql server 2008 Internals》读书笔记--第五章Table(4)
  7. while listening lectures
  8. 开源是项“全民工程”,揭秘开源团队的管理运作
  9. ES6相关特性的整理(变量数据结构)
  10. ASP.Net MVC 在ajax接收controller返回值为Json数据