数据库
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开发
人工智能在数据库运维工作中的应用趋势与落地场景研究
帆软报表开发学习
AI 助手在 Oracle DBA 工作中的辅助能力研究报告
AI原生数据库发展趋势白皮书
OpenClaw数据库管理应用实践
Apache Doris 简介
AI在实际工作中的应用案例分享
人形机器人现状
从十大AI技术趋势,窥见“未来”
AI 在辅助投资股票方面的落地方案与实际使用价值
从原理到实践,一文读懂主流 AI 技术
AI Agent 从零开始学习路线图
AI 驱动的内容生产工作流探索 —— 基于微信公众号文章编写与视频号视频生成的实践
本文档使用「觅思文档专业版」发布
-
+
首页
【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文档(打印)
分享
链接
类型
密码
更新密码
有效期