理解游标CURSOR,OPEN_CURSORS参数

理解游标CURSOR,OPEN_CURSORS参数

ID:38808024

大小:21.96 KB

页数:6页

时间:2019-06-19

理解游标CURSOR,OPEN_CURSORS参数_第1页
理解游标CURSOR,OPEN_CURSORS参数_第2页
理解游标CURSOR,OPEN_CURSORS参数_第3页
理解游标CURSOR,OPEN_CURSORS参数_第4页
理解游标CURSOR,OPEN_CURSORS参数_第5页
资源描述:

《理解游标CURSOR,OPEN_CURSORS参数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、理解游标CURSOR,OPEN_CURSORS参数以及视图V$OPEN_CURSOR,V$SESSION_CACHED_CURSOR游标概念:游标的作用就是用于临时存储从数据库中提取的数据块,由系统或用户以变量的形式定义。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。Cursor游标分两种,一种是Sharedcursor,位于SGA的一种librarycacheobject,通常我们所说的SQL的

2、父cursor,childcursor就是指这一类;另一种是Sessioncursor,是SQL的一个内存工作区(或者内存结构),位于PGA的UGA部分,为了使每一个SQL的会话拥有单独的1个私有SQL区(PrivateSQLArea),一次只处理1个SQL,私有SQL区包含了绑定变量信息及运行时期内存结构。一个sessioncursor只能对应一个sharedcursor,而一个sharedcursor却可能同时对应多个sessioncursor。通常open_cursors参数配置的便是1个session的最大Se

3、ssioncursors。即1个session最多可以拥有多少个PrivateSQLArea,直白一点就是1个session最多能在UGA保存多少个不同的SQL语句的信息(包括绑定变量信息,与Sharedcursor的关联信息),超过则一些执行频度低的游标会关闭。私有SQL区包括永久区:包含绑定变量信息。当游标关闭时被释放。运行区:当执行结束时释放。“软软解析”:当某个sessioncursor和其对应的sharedcursor建立关联后,如果把cursor_space_for_time调成true(有利有弊,需要SG

4、A和PGA都足够大),当一个sessioncursor处理完一条sql后,它就不会被destroy,Oracle会把其cache起来(我们称之为softclosedsessioncursor),这么做的目的是很明显的,因为这个softclosed掉的sessioncursor已经和包含其执行计划和parsetree的sharedcursor建立了联系,那么当在这个session中再次执行同样的sql的时候,Oracle就不再需要去扫描librarycache了,直接把刚才已经softclosed掉的sessioncur

5、sor拿过来用就好了,这就是所谓的软软解析。查询openedcursorsOPEN_CURSOR,定义每个Session最大能够打开的游标数量。在init.ora文件中定义,可以通过select*fromv$parameterwherename='open_cursors'查询。查询真正意义上的打开着的游标:selectsum(a.value),b.namefromv$sesstata,v$statnamebwherea.statistic#=b.statistic#andb.name='openedcursorscu

6、rrent'groupbyb.name;V$OPEN_CURSOR,包含多种CURSOR_TYPE的游标SESSIONCURSORCACHED,包括;可以通过以下SQL查询当前系统的游标类型及数量:selectkgllkmod,kgllkctp,count(*)fromX$KGLLKwhereKGLHDNSP=0groupbykgllkmod,kgllkctp;KGLLKMODKGLLKCTPCOUNT(*)-----------------------------------------------1SESSIONC

7、URSORCACHED321DICTIONARYLOOKUPCURSORCACHED961OPEN-RECURSIVE421PL/SQLCURSORCACHED191OPEN216而不是曾经打开的游标。V$SESSION_CACHED_CURSOR,当前Session已经关闭并被缓存的游标。V$OPEN_CURSOR中显示的当前Session游标缓存中游标,如果要精确查询当前Session打开的游标总数,需要从V$SESSTAT中查询。selecta.value,s.username,s.sid,s.serial#fr

8、omv$sesstata,v$statnameb,v$sessionswherea.statistic#=b.statistic#ands.sid=a.sidandb.name='openedcursorscurrent';SessionCache的原理:当设定SESSION_CACHED_CURSOR的值之后,当有parse请求

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。