oracle修改open_cursors,oracle的open_cursors问题探究
今天老魏遇到了一个这样的问题,
在google之后,发现讲open_cursors参数调大一些,就可以避免这样的问题(具体操作方法,可以自行百度/google)。
老魏在学习的时候,对这个游标的概念有点傻傻分不清,于是花费了一些时间,想把这个问题搞懂。
对于这个问题的实践,我参考了asktom上面,tom大师的回复。
我先阐述一下最开始的设想,我认为每执行一条sql语句,都会占用一个opencursor,并且会使v$sesstat的value值成比例增加。
为了验证我的猜想,我开始了下面的实验。
session1
SYS@orcl> select userenv('sid') from dual;
USERENV('SID')
--------------
1
SYS@orcl> select count(*) from dba_objects;
COUNT(*)
----------
13748
session2 查看sid=1的value值
SYS@orcl> select sid,value,b.class from v$sesstat a,v$statname b where a.statistic#=b.statistic# and name='opened cursors current' and a.sid=1 order by 2
2 ;
SID VALUE CLASS
---------- ---------- ----------
1 1 1
这时候,session1 无论执行多少sql语句,都不会使value增加,这引起了我的好奇,于是我在session2执行了下面的语句
我们可以看到,在上面的结果集中,只有一个cursor_type是open的,是否说明value值,与这个是相关的呢?
参考tom的回答(回答别的网友),我在session1采取了以下的操作
SYS@orcl> variable x refcursor;
SYS@orcl> variable z refcursor;
SYS@orcl> variable b refcursor;
SYS@orcl> variable a refcursor;
SYS@orcl> exec open :x for select * from dual;
PL/SQL procedure successfully completed.
SYS@orcl> exec open :z for select * from dual;
PL/SQL procedure successfully completed.
SYS@orcl> exec open :b for select * from dual;
PL/SQL procedure successfully completed.
SYS@orcl> exec open :a for select * from dual;
PL/SQL procedure successfully completed.
在session2在来执行查看语句
至此,我猜测,value只统计cursor_type为open的值。不仅仅plsql中的cursor,而且java中的createStatement和prepareStatement 也相当于cursor,都会增长value值,当达到open_cursor参数的最大值,再执行打开游标的动作,将会抛出ora-01000的问题。
我们可以通过以下语句对cursor剩余数量进行一下监控。
select value-(select max(value)from v$mystat a, v$statname b
where a.statistic# = b.statistic#
and b.name = 'opened cursors current')
from v$parameter where name='open_cursors';
老魏之前看书的时候,看到open_cursor参数过大,会引起PGA内存紧张。但是今天在google上看到了这样一种说法,
会在library cache 中分配 open_cursor参数个slot,按照这个说法,应该会对share pool会有影响。。。。我当时dump了一下library cache,但是并没有发现有关说法,这个问题就留到待我对oracle有更加深入的了解之后了。今天就简单的分享这么多,老魏文采不好,可能有些地方思维跳跃度比较大,望谅解!
oracle修改open_cursors,oracle的open_cursors问题探究相关推荐
- oracle修改memory,Oracle 修改 MEMORY_TARGET
Oracle 修改 MEMORY_TARGET,内存减小导致ORACLE启动不了,扩展内存后,按pfile启动,但sfile修改不了. 1.内存减小导致Oracle启动不了 Last login: S ...
- oracle 修改nls_characterset,ORACLE NLS_CHARACTERSET字符集的更改
ORACLE NLS_CHARACTERSET字符集的更改 数据库创建以后,如果需要修改字符集,通常需要重建数据库,通过导入导出的方式来转换. 我们也可以通过以下方式更改 ALTER DATABASE ...
- Oracle修改globalname,oracle修改global_name和service_name
安装oracle的时候会制定db_domain,制定db_domain后service_name和global_name都会加上这个domain,此时在配置tns file以及easy connect ...
- oracle 修改lsnrctl,ORACLE LSNRCTL密码及忘记密码处理
Oracle lsnrctl设置密码 如何给监听器设置密码,提防被其他用户关掉监听器?以下是给监听器设置密码的步骤: 进入LSNRCTL: 1.设置监听器的口令.默认口令为空. LSNRCTL> ...
- oracle 修改lsnrctl,Oracle中 lsnrctl命令使用总结(推荐)
Oracle监听服务lsnrctl参数及查询状态详解,常用参数. 在命令行中先输入lsnrctl,进入以下页面 1.status 显示监听器的状态.命令显示监听器是不是活动的,日志与跟踪文件的位置,监 ...
- oracle修改filesystem,oracle数据库 boost::filesystem使用例子
oracle数据库 boost::filesystem 使用例子 #include #include #include #include using namespace boost::filesyst ...
- oracle修改日历,oracle 日历
以下是从网上找到的相应的 oracle日历的sql并进行了改造可以生成任意一段时间内的日历. create table calendar ( statis_month number(6), -- 统计 ...
- oracle 修改 dbid,Oracle 在使用NID更改DBID时ORA-01122 ORA-01110 ORA-01206
适用于: Oracle Database – Enterprise Edition – 版本9.0.1.4 到 10.1.0.2 [Release 9.0.1 to 10.1] 本文信息适用于任何平台 ...
- oracle 修改nls_nchar_characterset,Oracle的NLS_NCHAR_CHARACTERSET和NLS_CHARACTERSET之间的区别...
一般来说,所有要点都是正确的. NLS_NCHAR_CHARACTERSET定义NVARCHAR2等的字符集.人.列,而NLS_CHARACTERSET用于VARCHAR2. Why is it po ...
- oracle 修改字段名称和备注,oracle 修改 字段名称
暂时应该没有对应的方法,所以我用自己想好的方法去修改 /*修改原字段名name为name_tmp,是将想改名称的字段改为没用/临时的字段*/ Alter table 表名 rename column ...
最新文章
- 人工智能AI-机器视觉CV-数据挖掘DM-机器学习ML-神经网络-[资料集合贴]
- unicode字符编码表下载_详解字符编码(上)
- Redis缓存高可用集群哨兵模式详解
- 200730学习日报6字符串
- 太平鸟上云 推动中国服饰行业新零售转型
- 获取周一_周一个股精选:光伏概念、央企改革:太阳能(000591)
- [转载] python的numpy.random详细解析
- 【CF551D】GukiZ and Binary Operations
- HTML5七夕情人节表白网页制作【生日快乐粒子烟花】HTML+CSS+JavaScript 生日祝福网页代码
- 爬虫爬取下载qq音乐,又跟新的风口相关?(附源码和资料)
- JavaScript基础视频教程总结(011-020章)
- 厦门大学邢兆雨:从统计专业到王亚南经济研究院博士生!
- Thinkphp聊天室H5实时聊天室群聊聊天室自动分配账户完群组私聊禁言等功能全开源运营版本
- 基于深度学习的视频修复算法
- 记录“麻辣香锅”病毒处理过程
- 源码分析:《Topic-to-Essay Generation with Neural Networks》
- 《团队执行力》分享记录
- shipyard可以启动,但是刷新不出容器,镜像
- 【C语言】从字符串中提取IP地址最简洁的方法
- phpmywind 子菜单调用