li
  当前位置:主页 > 性能优化 > 文章内容
li
pga浅谈
来源: www.itpub.net  作者: www.itpub.net    时间:2008-04-19   阅读:9  
本文章共12629字,分7页,当前第1页,快速翻页:
 

pga浅谈 Copy to clipboard
Posted by: wanghai
Posted on: 2003-09-04 12:24

我们都知道pga是process global area也称program global area,它是驻留在process private memory而

不是shared memory。每个process都有属于它自己的pga,其中仅包括了此process特定的信息,同时pga

不需要latch来保护因为没有别的process来访问。
pga包含两个部分:fixed pga和varible pga,固定pga包括一些变量,小的数据结构,指向varible pga

的指针等。varible pga是一个heap,它也由两个部分组成:permanent memory,subheap(包括了

uga,cga).permanent memory包括了一些fixed table,大小由初始化参数db_files,control files等决定

。下面来进入uga。
uga(user global area)可以说是pga里面最重要的组成部分,
它包括了
The persistent and runtime areas for open cursors
State information for packages, in particular package variables
Java session state
The roles that are enabled
Any trace events that are enabled
The NLS parameters that are in effect
Any database links that are open
The session's mandatory access control (MAC) label for Trusted Oracle
同时它的组成结构和pga是一样的,也包括fixed uga,varible uga(uga heap).fixed uga也包括一些

fixed table,大小由OPEN_CURSORS, OPEN_LINKS, MAX_ENABLED_ROLES等参数决定。剩下的varible uga

是我们最需要关心的地方!我们知道当我们发布一条sql语句时,需要经历

parse,optimization,execution,fetch阶段,如果找到shared sql便不用再hard parse,否则就hard

parse,等生成查询计划等就把cursor拷贝到uga一份,然后在uga开始执行,如果发现执行的时候sga里已

经把相关的cursor pageout了,那么就再从uga拷贝一份会sga,然后重新解析一次(费用小于hard parse

),也就是reloads,如果我们设置了session_cached_cursor的话,那么oracle就会直接在uga里去寻找

,而不用再拷回去重新解析。由此我们知道uga存储了private SQL,PL/SQL areas等重要信息,可能扯得

有点远了8D。我们还知道如果在mts模式下pga是在sga中分配得,其实这里说得是uga,fixed uga分配在

shared pool,uga heap 分配在large pool.下面在谈一下pga中的最后一个部分--cga。
cga(call global area)从名字看起来我们就能知道它大概的用处,它存在于每次call duration 中,包

括以下这些call
Parse an SQL statement
Execute an SQL statement
Fetch the outputs of a SELECT statement
当每次call一结束,cga的空间就被free到pga然后随着pga pageout到os。实际上包含在call中很多重要

的数据结构都存在于uga,比如private SQL and PL/SQL areas and sort areas。
大概讲了一下pga的构成,也算开了个头,欢迎大家来拍砖,也能更加清楚pga。


阅读更多内容1 · 2 · 3 · 4 · 5 · 6 · 7 · 下一页>>


  上一篇: Oracle Standby数据库专题探讨   下一篇: 关于 cursor_sharing = similar
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·Oracle Standby数据库专题探讨
·ora-04031处理过程,欢迎进行讨论
·exp 的奇怪问题
·data guard应用的三种模式
·bitmap index 的一点研究心得
·oracle ASSM内部存储研究大揭密
·oracle 9i特性之—在线表格重定义...
·oracle9i特性之数据库监控系列的...
·再谈ORA-01034 错误的解决办法
·oracle联机日志文件REDO LOGFILE...
·关于 cursor_sharing = similar
·关于 v$sysstat 与 v$filestat 中...
·statspack统计内容信息含义详解
·关于EXTENT MANAGEMENT LOCAL UN...
·关于Oracle后台進程问题的讨论
·ORA-12560: TNS: 协议适配器错误
·oracle OCA知识考点
·如何有效的关闭生产数据库?
·oracle SQL性能调整之一:SQL性能...
·oracle SQL性能调整之二:深入理解...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接