- 1、本文档共100页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.Oracle的内存架构组成.doc
Oracle內存全面分析
整理: 王琦
HYPERLINK /Doc/oracle_memory(1).htm /Doc/oracle_memory(1).htm
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 areaSort AreaHash Area??
UGA*nCUA*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。
此外,用于并非进程控制的锁(latch)的信息也包含在SGA区中。
Shared Pool、Java Pool、Large Pool和Streams Pool这几块内存区的大小是相应系统参数设置而改变的,所以有通称为可变SGA(Variable SGA)。
1.1.1.?? SGA
文档评论(0)