- 1、本文档共68页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle内存全面分析
作者:fuyuncat
来源:http://WWW.HelloDBA.COM
作者简介
黄玮,男,99 年开始从事DBA 工作,有多年的水利、军工、电信及航
运行业大型数据库Oracle 开发、设计和维护经验。
曾供职于南方某著名电信设备制造商——H 公司。期间,作为DB 组
长,负责设计、开发和维护彩铃业务的数据库系统。目前,H 公司的彩铃系
统是世界上终端用户最多的彩铃系统。最终用户数过亿。
目前供职于某世界著名物流公司,负责公司的电子物流系统的数据库开
发、维护工作。
msn: fuyuncat@
Email:fuyuncat@
Oracle 的内存配置与oracle 性能息息相关。而且关于内存的错误(如4030、4031 错
误)都是十分令人头疼的问题。可以说,关于内存的配置,是最影响Oracle 性能的配
置。内存还直接影响到其他两个重要资源的消耗:CPU 和IO。
首先,看看Oracle 内存存储的主要内容是什么:
??程序代码(PLSQL、Java);
??关于已经连接的会话的信息,包括当前所有活动和非活动会话;
??程序运行时必须的相关信息,例如查询计划;
??Oracle 进程之间共享的信息和相互交流的信息,例如锁;
??那些被永久存储在外围存储介质上,被cache 在内存中的数据(如redo log 条
目,数据块)。
此外,需要记住的一点是,Oracle 的内存是与实例对应的。也就是说,一个实例就有
一个独立的内存结构。
先从Oracle 内存的组成架构介绍。
1. Oracle的内存架构组成
Oracle 的内存,从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享
部分(主要是PGA 和UGA)。而这两部分内存里面,根据功能不同,还分为不同内存池
(Pool)和内存区(Area)。下面就是Oracle 内存构成框架图:
SGA
Share Pool
Buffer Cache
Redo Log Buffer
Java Pool
Stream Pool(10g)
Large Pool
PGA*n
Bitmap merge area Sort Area Hash Area
UGA*n
CUA*n
下面分别介绍这两块内存区。
1.1. SGA(System Global Area)
SGA(System Global Area 系统全局区域)是一组包含一个Oracle 实例的数据和控制
信息的共享内存结构。这句话可以说是SGA 的定义。虽然简单,但其中阐述了SGA 几个很
重要的特性:1、SGA 的构成——数据和控制信息,我们下面会详细介绍;2、SGA 是共享
的,即当有多个用户同时登录了这个实例,SGA 中的信息可以被它们同时访问(当涉及到
互斥的问题时,由latch 和enquence 控制);3、一个SGA 只服务于一个实例,也就是
说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA,尽管SGA 来自于OS
的共享内存区,但实例之间不能相互访问对方的SGA 区。
Oracle 进程和一个SGA 就构成了一个Oracle 实例。当实例启动时,Oracle 会自动从
系统中分配内存给SGA,而实例关闭时,操作系统会回收这些内存。下面就是当实例启动
后,显示已经分配了SGA:
SQL startup
ORACLE instance started.
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 117441216 bytes
Database Buffers 163577856 bytes
Redo Buffers 7139328 bytes
Database mounted.
Database opened.
SQL
SGA 区是可读写的。所有登录到实例的用户都能读取SGA 中的信息,而在oracle 做执
行操作时,服务进程会将修改的信息写入SGA 区。
SGA 主要包括了以下的数据结构:
??数据缓冲(Buffer Cache)
??重做日志缓冲(Redo Log Buffer)
??共享池(Shared Pool)
??Java 池(Java Pool)
??大池(Large Pool)
??流池(Streams Pool 10g 以后才有)
??数据字典缓存(Data Dictionary Cache)
??其他信息(如数据库和实例的状态信息)
最后的两种内存信息会被实例的后台进程所访问,它们在实例启动后就固定在SGA 中
了,而且不会改变,所以这部分又称为固定SGA(Fixed SGA)。这部分区域的大小一般小
于100K。
此外,用于
文档评论(0)