理解V$OPEN_CURSOR, V$SESSION_CACHED_CURSOR

这两个概念很容易混淆。[@more@] 概念:
OPEN_CURSOR,定义每个Session最大能够打开的游标数量。在init.ora文件中定义,可以通过select * from v$parameter where name = 'open_cursors'查询。
V$OPEN_CURSOR,当前Session缓存的游标,而不是曾经打开的游标。 V$SESSION_CACHED_CURSOR,当前Session已经关闭并被缓存的游标。
V$OPEN_CURSOR中显示的当前Session游标缓存中游标,如果要精确查询当前Session打开的游标总数,需要从V$ SESSTAT中查询。

select a.value,
s.username,
s.sid,
s.serial#
from
v$sesstat a,
v$statname b,
v$session s
where
a.statistic# = b.statistic# and
s.sid=a.sid and
b.name = 'opened cursors current';

Session Cache的原理:
当设定SESSION_CACHED_CURSOR的值之后,当有parse请求的时候,Oracle会从library cache中查询。如果有超过3次同样的parse请求,这个游标将会存入Session的游标缓存中。对于将来同样的查询,就甚至不要soft parse,直接从Session的游标缓存中取。

验证:
登录两个SQL*PLUS客户端,分别为Session test和Session monitor。

1. 检查是否参数设置,以及执行的SQL语句是否在V$OPEN_CURSOR找到。
Session Test:
SQL> show parameter session_cached_cursors;

NAME TYPE VALUE
------------------------------
session_cached_cursors integer 0
SQL> select sid from v$mystat where rownum=1;
SID
----------
9
SQL> select sid from v$mystat where rownum=1;
SID
----------
9

通过如上的执行结果可以知道,当前参数设置session_cached_cursors的值为0,不缓存当前Session关闭的游标。当前Session的ID为9。

Session Monitor: SQL> SELECT SID, n.NAME para_name, s.VALUE used
2 FROM SYS.v_$statname n, SYS.v_$sesstat s
3 WHERE n.NAME IN ('opened cursors current', 'session cursor cache count')
4 AND s.statistic# = n.statistic# 5 AND SID = 9;
SID PARA_NAME USED
--- ------------------------------ ----------
9 opened cursors current 1
9 session cursor cache count 0
SQL> select SID, USER_NAME,SQL_TEXT from v$open_cursor where sid=9;
SID USER_NAME SQL_TEXT
--- ---------- -----------------------------------------------------------
9 SCOTT select sid from v$mystat where rownum=1

通过如上的执行结果可以知道,当前在V$OPEN_CURSOR存储一个游标,对应SQL为Session Test执行的最后一条语句。V$SESSION_CACHED_CURSOR没有存储游标。

2. 更改参数V$SESSION_CACHED_CURSOR值。

Session Test:
SQL> alter session set session_cached_cursors = 1;
Session altered.
SQL> show parameter session_cached_cursors;
NAME TYPE VALUE
------------------------------------ ----------- -------------------------
session_cached_cursors integer 1

3. 验证如下结论。如果游标被存入SESSION_CACHED_CURSOR,前提是游标已经关闭,游标对应的SQL被执行3次以上。OPEN_CURSOR中会存储保存在SESSION_CACHED_CURSOR以及打开的游标(不是精确值)。

Session Test:
SQL> select sid from v$mystat where rownum =1;
SID
----------
9
SQL> select sid from v$mystat where rownum =1;
SID
----------
9
SQL> select sid from v$mystat where rownum =1;
SID
----------
9

Session Monitor:
SQL> select SID, USER_NAME,SQL_TEXT from v$open_cursor where sid=9;
SID USER_NAME SQL_TEXT
--- ---------- -----------------------------------------------------------
9 SCOTT select sid from v$mystat where rownum =1
SQL> SELECT SID, n.NAME para_name, s.VALUE used
2 FROM SYS.v_$statname n, SYS.v_$sesstat s
3 WHERE n.NAME IN ('opened cursors current', 'session cursor cache count')
4 AND s.statistic# = n.statistic#
5 AND SID = 9;
SID PARA_NAME USED
--- ------------------------------ ----------
9 opened cursors current 1
9 session cursor cache count 0

v$open_cursor dooes not show all open cursors. it shows more than that, the best option to find the number of open cursors is from v$sysstat. 通过如上的执行结果可以知道,即使同一个游标被打开3次,在SESSION_CACHED_CURSOR的数量仍然为0。

下面,将会在Session Test中关闭游标(通过执行一条其他的语句)。

Session Test: SQL> select * from t where rownum!=7;
no rows selected

Session Monitor:
SQL> SELECT SID, n.NAME para_name, s.VALUE used
2 FROM SYS.v_$statname n, SYS.v_$sesstat s
3 WHERE n.NAME IN ('opened cursors current', 'session cursor cache count')
4 AND s.statistic# = n.statistic#
5 AND SID = 9;
SID PARA_NAME USED
--- ------------------------------ ----------
9 opened cursors current 1
9 session cursor cache count 1
SQL> select SID, USER_NAME,SQL_TEXT from v$open_cursor where sid=9;
SID USER_NAME SQL_TEXT
--- ---------- -----------------------------------------------------------
9 SCOTT select sid from v$mystat where rownum=1
9 SCOTT select * from t where rownum!=7

通过如上的执行结果可以知道,游标被打开3次之后,如果这个游标关闭之后,游标会被存储到SESSION_CACHED_CURSOR当中。同时,通过OPEN_CURSOR中显示的SQL可以得知,OPEN_CURSOR中会存储保存在SESSION_CACHED_CURSOR以及打开的游标(不是精确值)。

其他:SESSION_CACHED_CURSOR采用的是LRU算法,如果如果有新的游标需要缓存,而当前游标缓存已经满,最少使用的游标将会被清除出去。调整SESSION_CACHED_CURSOR参数。通过如下SQL得到从缓存中取游标以及取PARSE的数量,为调整作参考。

select cach.value cache_hits, prs.value all_parses,
prs.value-cach.value sess_cur_cache_not_used
from v$sesstat cach, v$sesstat prs,
v$statname nm1, v$statname nm2
where cach.statistic# = nm1.statistic# and
nm1.name = 'session cursor cache hits' and
prs.statistic#=nm2.statistic# and
nm2.name= 'parse count (total)' and
cach.sid= &sid and prs.sid= cach.sid ;

参考:
1. Monitoring Open and Cached Cursors
2. session_cached_cursor

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/94829/viewspace-918266/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/94829/viewspace-918266/

Oracle数据库游标连接超出解决方案 oracle数据库忽然连不上了,一查是游标数量超了。 1.查看游标数 show parameter open_cursors 2.修改游标数 alter system set open_cursors = 10000; 3.获取打开的游标数 select o.sid, osuser, machine, count(*) num_curs from v$open_cursor o, v$session s where user_name = 'AF651_U8' and o.sid = s.sid group by o.sid, osuser, machine order b 立即下载

相关推荐

MiniOSD DIY记

最近迷上了航模,研究了很多东西,感觉路走的长了还是适当要停下脚步休息下总结下。 这次DIY的是一块OSD设备,主要用于航模图传的叠加显示,原理也很简单就是atmel atmega328p+MAX7456芯片,网上卖的成品基本上都是一个原理图。 原理图 我按照我自己的需要做了适当的更改,去掉了DC-DC电路,直接用5V输入,因为摄像头都是5V的,所以DC-DC不是很有必要,体积上更加小了点, 打...

memoff的博客 7600

v$open_cursor

v$open_cursor 本视图列出session打开的所有cursors 当诊断系统资源占用时,它常被用于联接v$sqlarea和v$sql查询出特定SQL(高逻辑或物理I/O)。然后,下一步就是找出源头。在应用环境,基...

452

数学之美 | 图论和网络爬虫

文章目录概述图论网络爬虫分析BFSDFSBFS + DFS参考资料 概述 这篇文章主要给大家介绍一下计算机算法中非常重要的一部分——图论,以及它在生活中的应用——网络爬虫。   图论 离散数学是当代数学的一个重要的分支,也是计算机科学的数学基础。它又包括四个分支,而图论便是其中一支,另外三个分别是:数理逻辑、集合论、近代数学。 图论中的图由一些节点和边构成,比如下面这张图 。 在图论中一个很基础...

小小酥梨的博客 2032

关于V$OPEN_CURSOR

在之前的一次讨论中,有同行指出V$OPEN_CURSOR中列出的不是OPEN CURSOR而是SESSION CACHED CURSOR,原因是在一次ORA-01000(maximum open cursors exceeded)事故中他没有从V$OPEN_CURSOR中找到大量的打开游标。 对于这个问题,我们可以利用JAVA程序做一个演示来说明,以下为JAVA代码: package

u013260637的专栏 3959

Oracle参数open_cursors和session_cached_cursor详解

Oracle参数open_cursors和session_cached_cursor详解SQL>showparameteropen_cursors --每个session(会话)最多能同时打开多少个cursor(游标) NAMETYPEVALUE -...

weixin_33830216的博客 593

WINCC8.1工业组态软件安装与授权配置指南

SCADA系统作为工业自动化控制的核心平台,通过实时数据采集与监控实现生产流程可视化。WINCC作为西门子旗舰级组态软件,其8.1版本凭借稳定的运行时环境在汽车制造、流程工业等领域广泛应用。本文从工业控制系统软件安装规范切入,重点解析WINCC8.1与Automation License Manager的协同工作原理,详细说明包括系统环境检查、安装包校验、授权文件配置等关键技术环节。针对工程实施中常见的内存配置不足、授权管理器报错等典型问题,提供经过现场验证的解决方案,特别适用于需要进行产线监控系统升级维护

cqwf95925的博客 863

学习动态性能表 第十三篇--V$OPEN_CURSOR

  学习动态性能表 第13篇--V$OPEN_CURSOR    本视图列出session打开的所有cursors,很多时候都将被用到,比如:你可以通过它查看各个session打开的cursor数。   当诊断系统资源占用时,它常被用于联接v$sqlarea和v$sql查询出特定SQL(高逻辑或物理I/O)。然后,下一步就是找出源头。在应用环境,基本都是同一类用户登陆到数据库(在V$SQL...

weixin_33912453的博客 246

基于Sentinel-2(哨兵2)遥感卫星的植被覆盖度提取

基于Sentinel-2(哨兵2)遥感卫星的植被覆盖度提取 一、Sentinel-2简单介绍 哨兵-2系列卫星的主要载荷多光谱成像仪拥有13个谱段,从可见光到近红外再到短波红外,空间分辨率从10m到60m,能实现全所未有的陆地海洋监测水平。其幅宽高达290KM,且A、B双星组合,覆盖能力比美国Landsat8卫星强很多。目前哨兵-2A和哨兵-2B已经实现了5天的重访时间,即使在之前仅有单颗卫星时,...

weixin_44143671的博客 2万+

理解V$OPEN_CURSOR, V$SESSION_CACHED_CURSOR [zt]

这两个概念很容易混淆。概念: OPEN_CURSOR,定义每个Session最大能够打开的游标数量。在init.ora文件中定义,可以通过select * from v$parameter where name = 'open_cursors'查询。 V$OPEN_CURSOR,当前Session缓存的游标,而不是曾经打开的游标。 V$SESSION_CACHED_CURSOR,当前Se...

abc123098098的博客 160

理解游标CURSOR,OPEN_CURSORS参数 以及视图V$OPEN_CURSOR, V$SESSION_CACHED_CURSOR

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

Ezail_xu的专栏 1950

Genesis物理引擎实战指南:轻量级确定性刚体仿真核心

刚体物理仿真作为机器人控制、嵌入式运动学验证和确定性游戏开发的基础技术,其核心在于数值稳定性、跨平台可复现性与约束求解精度。本文围绕线性互补问题(LCP)求解、半隐式欧拉积分和零依赖C++实现三大关键技术展开,解析如何在无GUI、低算力环境下构建可单步调试、帧级可控的确定性仿真系统。重点覆盖碰撞检测数学建模、关节局部坐标系绑定、质量-惯性张量一致性校验等工程落地关键点,适用于STM32、树莓派及教育实验场景。内容深度结合Genesis Physics Engine的源码实践,直击‘穿模’‘NaN’‘关节发软

ciya3282的博客 780

[zt] 理解V$OPEN_CURSOR, V$SESSION_CACHED_CURSOR

select a.value, s.username, s.sid, s.serial# from v$sesstat a, v$statname b, v$session s where ...

cuixie2370的博客 101

基于UCD3138的数字控制硬开关全桥DC-DC电源设计实战解析

在开关电源设计中,数字控制技术正逐步取代传统模拟方案,以其卓越的灵活性、可编程性和强大的数据处理能力,成为应对复杂动态响应与智能化需求的关键。其核心原理在于通过高精度模数转换器(ADC)实时采样电压、电流信号,经由数字信号处理器(如ARM内核)运行PID等控制算法,动态调整数字脉宽调制(DPWM)输出,从而实现对功率级的精确控制。这种技术价值体现在能够轻松实现高级算法(如输入电压前馈、非线性补偿)、灵活配置保护参数,并通过PMBus等接口实现智能化监控与管理。其典型应用场景包括通信基站、服务器电源以及工业设

699

不是可以识别的 cursor 选项_理解Oracel游标CURSOR参数和相关视图V$OPEN_CURSOR

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

weixin_36053926的博客 1985

sql 游标结果放进表中_理解Oracel游标CURSOR参数和相关视图V$OPEN_CURSOR

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

weixin_39888018的博客 325

DCMTK编译

dcmtk-3.6.4 使用Unicode?dcmtk的编译选项里没有关于Unicode的选项,OFString的接口里明确使用了OFString(char*)作为构造函数参数,所以,我们可以假设不能够自己擅自在CMakeList.txt里增加一行 add_definitions(-DUNICODE -D_UNICODE) 来强制使用Unicode编码。 亲测:加了之后编译不过 void...

C++ 爱好者 make_it_simple888 1249

open_cursor 和 v$open_cursors的区别 .

有csdn的朋友问到 open_cursor 和 v$open_cursors的区别这样的问题  SQL> select count(*) from v$open_cursor;  COUNT(*)  ----------  3436  SQL> show parameter open_cursor  NAME TYPE VALUE  ----------------

北极星的专栏 2320

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Oracle游标管理:open_cursors与session_cached_cursors参数深度解析与调优实践

在数据库性能优化领域,游标(Cursor)是SQL语句执行的核心资源单元,它管理着SQL解析、执行计划与结果集状态。其工作原理涉及服务器端内存分配与生命周期管理,直接影响系统并发处理能力与稳定性。从技术价值看,高效的游标管理能显著降低CPU解析开销、减少内存竞争,是保障OLTP系统高可用的关键。典型应用场景包括高并发交易系统、微服务数据库访问层以及使用ORM框架的企业应用,这些场景中游标复用效率直接决定系统吞吐量。本文聚焦open_cursors与session_cached_cursors两个核心参数,通

weixin_30740581的博客 318

理解游标(1):游标的概述

eygle说,数据库的活动主要就是游标的活动 游标的重要可见一斑 为此,我做了系列的文章,循序渐进对游标进行学习 第一篇,是概述,便大体了解先: ① 定义 官方定义: A cursor is a handle or name for a private SQL area 即:游标是私有SQL区的名字,但其实际并不存在,只是由私有SQL区中的部件而组成 在每条SQL语句的一生中,都有一个...

数据库 149

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

理解V$OPEN_CURSOR

http://blog.sina.com.cn/s/blog_6d6e54f70100wf4o.html

我的Oracle DBA之路 4551

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

oracle v$sqlare,关于:v$sql,v$sqlarea,v$sqltext,v$open_cursor

v$sql,v$sqlarea,v$sqltext,v$open_cursor4张表区别:v$sql:跟v$sqlarea的明细表,v$sqlarea是v$sql 通过对hash_value,sql_id 这两个值group by 得来的,v$sqlarea 进行了group by,v$sql没有进行group by。v$sql:lists statistics on shared SQL are...

weixin_36018494的博客 529

重庆思庄技术分享——Oracle 参数 OPEN_CURSORS

假设会话未打开OPEN_CURSORS指定的游标数,则将此值设置为高于实际需要的值不会增加开销。Oracle OPEN_CURSORS 参数是控制Oracle的数据库最大的游标数量,如果游标数量超出了 OPEN_CURSORS设定的值,则会出现ORA-01000: 错误消息:游标数过多。正确设置Oracle的OPEN_CURSORS参数需要考虑用户数量,SESSION数量,数据库会话之间共享游标的最小值,以及在应用程序中循环遍历游标所需要的操作。Oracle 参数 OPEN_CURSORS。

m0_61458430的博客 781

cisco any connect 4.4 windows

cisco any connect 4.4 windows 客户端 ''''

如何找出Oracle instance中当前打开游标open cursor的总数?

http://t.askmaclean.com/thread-1302-1-33.html 如何找出Oracle instance中当前打开游标open cursor的总数? v$open_cursor包括多种cursor:注意 11.2中v$open_cursor 才有 cursor_type 这一字段 之前都没有 , 即无法分清楚 是open cursor 还是ca...

dd334566788566的博客 442
上一篇: 通过dbms_xplan.display察看执行计划
下一篇: 察看当前Session登录的数据库
clz466016352
博客等级 码龄12年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值