欢迎来到天天文库
浏览记录
ID:38262342
大小:17.27 KB
页数:4页
时间:2019-06-07
《ORACLE 判断OPEN_CURSOR参数设置合理性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、理解V$OPEN_CURSOR,V$SESSION_CACHED_CURSOR概念:OPEN_CURSOR,定义每个Session最大能够打开的游标数量。在init.ora文件中定义,可以通过select*fromv$parameterwherename='open_cursors'查询。V$OPEN_CURSOR,当前Session缓存的游标,而不是曾经打开的游标。V$SESSION_CACHED_CURSOR,当前Session已经关闭并被缓存的游标。V$OPEN_CURSOR中显示的当前Sessio
2、n游标缓存中游标,如果要精确查询当前Session打开的游标总数,需要从V$SESSTAT中查询。selecta.value,s.username,s.sid,s.serial#fromv$sesstata,v$statnameb,v$sessionswherea.statistic#=b.statistic#ands.sid=a.sidandb.name='openedcursorscurrent';SessionCache的原理:当设定SESSION_CACHED_CURSOR的值之后,当有parse
3、请求的时候,Oracle会从librarycache中查询。如果有超过3次同样的parse请求,这个游标将会存入Session的游标缓存中。对于将来同样的查询,就甚至不要softparse,直接从Session的游标缓存中取。验证:登录两个SQL*PLUS客户端,分别为Sessiontest和Sessionmonitor。1.检查是否参数设置,以及执行的SQL语句是否在V$OPEN_CURSOR找到。SessionTest:SQL>showparametersession_cached_cursors;N
4、AMETYPEVALUE------------------------------session_cached_cursorsinteger0SQL>selectsidfromv$mystatwhererownum=1;SID----------9SQL>selectsidfromv$mystatwhererownum=1;SID----------9通过如上的执行结果可以知道,当前参数设置session_cached_cursors的值为0,不缓存当前Session关闭的游标。当前Session的ID
5、为9。SessionMonitor:SQL>SELECTSID,n.NAMEpara_name,s.VALUEused2FROMSYS.v_$statnamen,SYS.v_$sesstats3WHEREn.NAMEIN('openedcursorscurrent','sessioncursorcachecount')4ANDs.statistic#=n.statistic#5ANDSID=9;SIDPARA_NAMEUSED----------------------------------------
6、---9openedcursorscurrent19sessioncursorcachecount0SQL>selectSID,USER_NAME,SQL_TEXTfromv$open_cursorwheresid=9;SIDUSER_NAMESQL_TEXT------------------------------------------------------------------------9SCOTTselectsidfromv$mystatwhererownum=1通过如上的执行结果可以知道
7、,当前在V$OPEN_CURSOR存储一个游标,对应SQL为SessionTest执行的最后一条语句。V$SESSION_CACHED_CURSOR没有存储游标。2.更改参数V$SESSION_CACHED_CURSOR值。SessionTest:SQL>altersessionsetsession_cached_cursors=1;Sessionaltered.SQL>showparametersession_cached_cursors;NAMETYPEVALUE-------------------
8、-----------------------------------------------------session_cached_cursorsinteger13.验证如下结论。如果游标被存入SESSION_CACHED_CURSOR,前提是游标已经关闭,游标对应的SQL被执行3次以上。OPEN_CURSOR中会存储保存在SESSION_CACHED_CURSOR以及打开的游标(不是精确值)。SessionTest:SQ
此文档下载收益归作者所有