数据库
oracle数据库自启动和关闭脚本调用
数据库灾备恢复小结
DMS使用文档
Oracle12C安装文档_李光升
Centos配置yum源的操作步骤-李光升
CCS数据库突然卡顿问题解决-徐铭
Centos 7.9静默安装oracle 12cR2详细步骤
mysql5.7数据库sql语句数据类型隐式转换的反逻辑BUG
RDS MySQL临时文件导致实例磁盘空间满且出现“锁定中”状态
关于Mysql引擎Myisam和InnoDB的使用
MySQL查询语句中in和exists区别详解-知识点
Mysql 的存储过程中 WITH AS 的语法和使用
Mysql 性能调优-详解
oracle数据库DG搭建
SUSE linux 配置时钟同步服务NTP/Chrony
oracle数据库实例开启操作文档
oracle数据库实例关闭操作文档
oracle数据库DBS备份配置文档v2
ALiYun ECS CENTOS数据上传到OSS操作手册
Oracle - LOGMINER配置方法
oracle sysaux表空间爆满清理unified auditing数据
sysaux表空间爆满WRI$_ADV_OBJECTS占用严重
SAP权限对象
SYSAUX表空间WRI$\_ADV\_OBJECTS表过大清理V2
oracle:表访问方式
ORA性能诊断调优
数据字典(DICT)和性能事件类型(EVENT)
日志挖掘LogMiner
RMAN sql_id “0az7czjdw8z7j” 执行计划异常
Oracle11g Active Data Guard搭建、管理
ORACLE LOGMINER配置v2
oracle日志组调整
ECS linux服务器挂载nas磁盘失败
oracle数据库修改字符集
datapump数据泵导入导出
OA系统数据库ADG架构搭建
IPS数据库SQL执行异常:ORA-00600
oracle 12c 创建PDB
oracle数据库监听异常
lvm:阿里云磁盘扩容,lvm扩容
Redis基本操作
SAP S4 CLIENT COPY(800->400)
日常数据库操作
PGSQL操作
# ORA-00054: resource busy问题处理
OA数据库服务器故障分析报告
CCS数据库生产数据库(北京中心)覆盖到VER环境数据库(乌兰察布):使用nonpdb to pdb迁移方式
WINDOWS环境Django框架连接MySQL数据库配置
Django开发学习实战
什么是向量嵌入?
OA数据库服务器内次异常增长问题分析
基于AI的自动化服务器管理
AI技术发展趋势及其在农牧食品行业的创新应用
IPS数据库日志表数据归档&表分区
国产编程模型GLM-4.6海外爆火:性能媲美ClaudeSonnet,性价比优势显著
免费开源的零代码平台 / 无代码平台,敲敲云 v2.2.0 版本
数据库原理与应用
AI发展近况分析
ORACLE ADG环境下解除ADG关系并激活备库为独立数据库
麦肯锡重磅报告:关于未来的生存指南,当57%的工作被自动化,我们如何与AI结成利益共同体
【Oracle】Cursor(游标)
ORACLE数据库在曾经的备库(路径一致)进行不完全恢复
获取执行计划的6种方法
人工智能行业的发展已进入“系统竞争”时代
2026年AI与机器人发展趋势
事务未提交导致行锁等待问题处理
MongoDB日常操作命令
2026年人工智能前沿技术趋势与应用落地分析
Doris开发
本文档使用「觅思文档专业版」发布
-
+
首页
【Oracle】Cursor(游标)
Cursour(游标)是Oracle数据库中解析SQL和执行SQL的载体。 ### 一、Shared Cursor #### 1. 定义 ** Shared Cursor 是指缓存在库缓存里 SQL 语句和匿名 PL/SQL 对应的 SQL 文本、解析树、目标 SQL 涉及的对象、目标 SQL 中的绑定变量及 SQL 的执行计划等信息。 ** #### 2. 查询方式 Shared Cursor 又细分为 Parent Cursor(父游标)和 Child Cursor(子游标)两种。V$SQLAREA 可查看 Parent Cursor,V$SQL 可查看 Child Cursor(CHILD_NUMBER 值从 0 开始)。Parent Cursor 和 Child Cursor 均已库缓存对象句柄的方式缓存在库缓存中,Namespace 为 CRSR。 #### 3. 父子游标的区别和联系 目标 SQL 的 SQL 文本存储在 Parent Cursor 所对应库缓存对象句柄的 Name 属性中,Child Cursor 的 Name 属性为空; 目标 SQL 的解析树和执行规则会存储在Child Cursor 对应库缓存对象句柄的 Heap 6 中;Parent Cursor 的 Heap 0 中存储了该父游标对应的所有子游标库缓存对象句柄地址。 #### 4. 缘由 由于不同目标 SQL 的文本对应的哈希值可能相同,且同一个目标 SQL 也可能存在多份不同的解析树和执行计划。为了尽量减少对应 Hash Bucket 中库缓存对象句柄链表的长度,同时减少 Oracle 检索库缓存对象句柄链表所消耗的时间和工作量,Oracle 父子游标并存的结构一直延续至今。 ### 二、Session Cursor #### 1. 说明 Session Cursor 是解析和执行 SQL 的载体,Session Cursor 也是以哈希表的方式缓存起来,只不过是缓存在 PGA 中。 #### 2. 注意事项 1) Session Cursor 和 Session 一一对应,不同的 Session 的 Session Cursor 之间没法共享 2) Session Cursor 有生命周期,在使用过程中都至少会经历一次 Open、Parse、Bind、Execute、Fetch 和 Close 中的一个或多个阶 3) Session Cursor 也是以哈希表的方式缓存在 PGA 中,Oracle 会同样根据哈希运算来存储和访问当前 Session 对应 PGA 中 Session Cursor 4) 一个 Session Cursor 对应一个 Shared Cursor,一个 Shared Cursor 可以同时对应多个 Session Cursor 5) 一个 Session Cursor 能够被缓存在 PGA 中的必要条件是该 Session Cursor 所对应的 SQL 解析和执行次数要超过 3 次 #### 3. 作用 解析和执行目标 SQL Oracle 依靠 Session Cursor 将目标 SQL 所涉及的数据从 Buffer Cache 的对应数据块读到 PGA,然后 PGA 做后续处理(排序、表连接) #### 4. 相关参数 OPEN_CURSORS:设定单个 Session 中同时以 Open 状态并存的 Session Cursor 的总数 SESSION_CACHED_CURSORS:设定单个 Session 中能够以 Soft Closed 状态并存的 Session Cursor 总数 CURSOR_SPACE_FOR_TIME:Oracle 11gR1 之前的版本用来减少库缓存相关 Latch 争用,副作用是增加 Shared Pool 压力 ### 三、分类 隐式游标(Implicit Cursor) 显式游标(Explicit Cursor) 参考游标(Ref Cursor)
徐铭
2025年12月22日 11:37
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期