重庆思庄Oracle、、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 812|回复: 0
打印 上一主题 下一主题

[参数设置] open_cursors参数

[复制链接]
跳转到指定楼层
楼主
发表于 2024-12-5 09:12:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 jiawang 于 2024-12-3 10:45 编辑

参数open_cursors概况
open_cursors 设定每个 session(会话)最多能同时打开多少个 cursor(游标)。
当我们执行一条 sql 语句的时候,我们将会在 shared pool 产生一个 library cache object,cursor 就是其中针对于 sql 语句的一种 library cache object。另外我们会在 pga 有一个 cursor 的拷贝,同时在客户端会有一个statement handle,这些都被称为 cursor,在 v$open_cursor 里面我们可以看到当前打开的 cursor 和 pga 内 cached cursor。
作用是让后续相同的 sql 语句不在打开游标,从而避免软解析过程来提供应用程序的效率。


参数open_cursors大小


查询当前数据库设定的值:
SQL> show parameter open_cursors
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 300



修改该参数:SQL> alter system set open_cursors =1000;System altered
该参数为动态参数,修改后立即生效。

参数open_cursors应该设置多大

通过以下语句查询:
SQL> SELECT MAX(A.VALUE) AS HIGHEST_OPEN_CUR, P.VALUE AS MAX_OPEN_CUR2   
FROM V$SESSTAT A, V$STATNAME B, V$PARAMETER P3   
WHERE A.STATISTIC# = B.STATISTIC#4     
AND B.NAME = 'opened cursors current'5     
AND P.NAME = 'open_cursors'6   
GROUP BY P.VALUE;
HIGHEST_OPEN_CUR MAX_OPEN_CUR
---------------- --------------------------------------------------------------------------------
43 300


字段含义:
HIGHEST_OPEN_CUR 是实际打开的 cursors 的最大值;
MAXOPEN CUR 是参数 Open_cursors 的设定值。


如果二者太接近,甚至触发 ORA-01000 错误,那么你就应该调大参数 open_cursors 的设定值。
如果问题依旧没有解决,盲目增大 open_cursors 也是不对的,这个时候你得检查应用程序的代码是否合理,比如说应用程序是否打开了游标,却没有在它完成工作后没有及时关闭。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2025-5-18 17:05 , Processed in 0.101248 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表