- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SGA_MAX_SIZE与SGA_TARGET
Oracle?的SGA?包括以下几个部分,可以通过show sga?命令或者是通过查看v$sga?视图来查看SGA?的大概组成: 17:39:48 SQL show sga Total System Global Area 1048576000 bytes Fixed Size??????????????????1223392 bytes Variable Size?????????????847250720 bytes Database Buffers??????????192937984 bytes Redo Buffers牋牋牋牋牋牋牋牋7163904 bytes84 bytes ? 17:42:05 SQL select * from v$sga; NAME牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋燰ALUEm v$sga;4 bytes?视图 Fixed Size牋牋牋牋牋牋牋牋牋牋牋牋1223392.00 Variable Size牋牋牋牋牋牋牋牋牋00 Database Buffers牋牋牋牋牋牋牋牋192937984.00 Redo Buffers牋牋牋牋牋牋牋牋牋牋牋7163904.00.00 从上面可以大致的看到sga?包括一个固定区,一个可变区,一个数据库缓存和一个redo?缓存。这些是比较笼统的信息,具体的SGA?是由以下几个部分组成的: -?数据缓冲(Buffer Cache?) -?共享池(Shared Pool?) -?大池(Large Pool?) - Java?池(Java Pool?) -?流池(Streams Pool 10g?以后才有) -?重做日志缓冲(Redo Log Buffer?) -?其他buffer caches?(如KEEP, RECYCLE, and other block sizes cache?等) - Fixed SGA and other internal allocations?。 其中,Shared Pool?、Java Pool?、Large Pool?和Streams Pool?这几块内存区的大小是相应系统参数设置而改变的,所以有通称为可变SGA?(Variable SGA?)。最后一个fixed sga?部分,一般是在实例启动以后就固定在sga?中了,是不会发生变化的,这个部分的区域一般小于100k?。 理解了SGA?的组成以后,下面就来解释一下有关设置SGA?大小的两个参数SGA_MAX_SIZE?和SGA_TARGET?的含义。 SGA_MAX_SIZE ?????这个参数顾名思义,它用来控制SGA?使用虚拟内存?的最大大小,这里的虚拟内存的含义可能会有所模糊,先可以这样理解,就是Oracle?所能在内存中给SGA?分配的最大大小?。 现在来解释一下我这里“虚拟内存”的含义,确切的应该这样说:实际内存和虚拟内存。我们知道当OS?中实际内存不够使用的时候,OS?就会去使用虚拟内存。oracle?是运行与os?之上的一个系统软件,它也是一个程序,它所请求os?给它多少内存用来作为其sga?(比方说Oracle?申请500M?内存用作SGA?,即SGA_MAX_SIZE=500M?),os?一般是不会在oracle?启动的时候就给它全部的实际内存,而可能只给200M?。随着程序的运行,Oracle?不断的需要内存,而假设计算机的所有实际内存只有500M?,那么很肯定的是OS?不可能把全部500M?实际内存分配给oracle?的sga?,可能也最多就给了350M?,剩下的150M?使用虚拟内存。Oracle?的SGA?达到500M?的时候(即达到SGA_MAX_SIZE?指定的大小),实际上这个sga?由350M?实际内存和150M?的虚拟内存组成,如果这个时候Oracle?想继续申请内存给SGA?使用,那么OS?是不会再给其分配内存,因为它已经达到了SGA_MAX_SIZE?的最大值。这个例子,虽然比较极端,即使OS?实际上比方说有1G?内存,Oracle?的SGA?也未必全部由实际内存组成,可能是由400M?实际内存和100M?的虚拟内存组成,这是由操作系统的内存管理策略决定的。此时,很显然有个问题,假设我的机器物理内存(实际内存)足够多,如何让Oracle?所申请的SGA?内存全部在物理内存中呢,因为假设使用了虚拟内存,必定会带来额外的PAGE IN/PAGE OUT?的I/O?操作,这是很不合算的。这个问题其实就是在物理内存中固定SGA?的问题,这要涉及到另外两个参数LOCK_SGA?和PRE_PAGE_SGA?以及具体操作系统是否支持内存锁定的问题了,对此在这不予讨论。因此可以简洁的这样说:当实例启动后,各个内存区只分配实例所需要
文档评论(0)