0

0

从10046 Trace RAW File看Cursor

php中文网

php中文网

发布时间:2016-06-07 16:48:57

|

1258人浏览过

|

来源于php中文网

原创

游标共享Cursor是Oracle学习过程中的一个重点和难点。Oracle的Cursor是建立在对SQL解析Parse消耗的优化上的。根据不同的内存缓存

游标共享cursor是oracle学习过程中的一个重点和难点。oracle的cursor是建立在对sql解析parse消耗的优化上的。根据不同的内存缓存结构,我们经常可以听到诸如:硬解析hard parse、软解析soft parse和软软解析的名词概念。

严格的说,游标共享的概念基础是游标。Oracle中,游标可以分为Shared Cursor和Private Cursor两个大的类型。理解游标的前提,一定要区分出这两个游标类型。

Oracle 自适应游标共享--adaptive cursor sharing 

Oracle 11g新SQL Trace 10046方法 

1、Shared and Private Cursor

Shared Cursor大家谈的比较多,就是驻留在Library Cache里面的缓存对象,其中保存着之前解析好的执行计划。当一个SQL语句第一次出现在系统中,Oracle在Library Cache中没有找到对应的“现成”执行计划,就会启动硬解析Hard parse过程,在Library Cache中生成一个Shared Cursor。注意:这个SQL Cursor可以被其他“符合游标共享条件”的其他会话session共享。在没有被age out或者flush出内存前,都是可以共享。如果第二次发出相同SQL语句,共享了Shared Cursor,我们称之为Soft Parse。

而与Shared Cursor对应的就是Private Cursor。Private Cursor是驻留在Server Process的PGA空间里的。当我们发出SQL或者手工创建一个Cursor,都会在Server Process对应的PGA空间里创建出一个Private Cursor对象。

顾名思义,Private Cursor的含义是只能被当前Session使用,不能实现session间共享。但是,相同一个Session,如果多次执行,是不是需要多次的创建Private Cursor呢?这个过程涉及到的问题就是Private Cursor的共享问题。

我们在一些资料里面可以看到一些混淆概念。说一个SQL只有执行三次之上,才能进行共享。如果我们进行简单的实验,就可以发现这个论断在shared cursor中并不成立。一旦SQL执行一次,在Library Cache中会去生成shared cursor,何来三次之说?应该说,这个论断前提是Private Cursor共享。

2、软软解析和参数配置

我们接触很多的概念是“Hard Parse”和“Soft Parse”。两者的差异在于是否在Library Cache中发生执行计划生成的动作。如果我们将Private Cursor因素考虑进去之后,就会有一个新的解析类型“软软解析”。

即使是Soft Parse,我们在PGA里面,每次执行SQL的时候都会有Private Cursor的创建过程。按照Cursor生命周期,当Cursor执行结束之后,会有一个Close动作将Private Cursor失效。Oracle是可以尝试对Private Cursor进行缓存,也就是说,Close动作并不是真正关闭消失,而是可以支持共享Private Cursor。

如果可以实现Private Cursor在PGA中的重用,我们是可以将PGA中创建Cursor的部分成本消除掉。实现所谓的软软解析。

从Oracle早期开始,我们接触过一个参数为open_cursor。最初这个参数起到两个层面作用,其一是控制一个会话可以同时打开的最大Cursor数量,另一个是控制了PGA里面能够共享Private Cursor缓存的最大个数。

之后Oracle的设置出现了一些变化,引入了新参数session_cached_cursors,单独进行缓存区大小的限制。目前笔者实验的版本中,,这个参数是50。

SQL> show parameter cached

NAME                                TYPE        VALUE

------------------------------------ ----------- ---------------

通义千问
通义千问

阿里巴巴推出的全能AI助手

下载

session_cached_cursors              integer    50

对于PGA里面的Private Cursor共享情况,Oracle会记录生成的次数。当执行三次的时候,就会建立PGA内部缓存的结构机制。

本篇中我们使用10046来验证上面提到的机制。

3、环境准备

我们先找一个10046的Trace文件作为实验对象。选择11.2.0.3作为实验对象。

SQL> select value from v$diag_info where;

VALUE

--------------------------------------------------------------------

/u01/app/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_6964.trc

清空shared pool和buffer cache,执行相同的SQL语句10次。

SQL> alter system flush shared_pool;

系统已更改。

SQL> alter system flush buffer_cache;

系统已更改。

SQL> alter session set events '10046 trace name context forever, level 12';

会话已更改。
 
 
SQL> select count(*) from t;
 
  COUNT(*)
 
----------
 
        0
 
SQL> select count(*) from t;
 
  COUNT(*)
 
----------
 
        0
 
(其余执行次数略……)
 
SQL> alter session set events '10046 trace name context off';
 
会话已更改。
 
SQL>
 
生成了trace文件之后,我们下面详细分析这个文件的细节。

更多详情见请继续阅读下一页的精彩内容:

linux

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

59

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

52

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

25

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

10

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

7

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

411

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

232

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

194

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

150

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.7万人学习

Java 教程
Java 教程

共578课时 | 55.6万人学习

oracle知识库
oracle知识库

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号