oracle内存分配与调整_第1页
oracle内存分配与调整_第2页
oracle内存分配与调整_第3页
oracle内存分配与调整_第4页
oracle内存分配与调整_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle内存分配与参数设置基本初始化参数介绍内存分配与初始化参数的设置基本初始化参数的功能sga_max_size(SGA):说明:指定例程存活期间所占用的系统全局区的最大大小。值范围:0到各操作系统所允许的最大值。请注意,由于该参数值的最小值在启动时已经调整完毕,因而它无关紧要。默认值:如果未指定值,sga_max_size的默认值将与启动时SGA的最初大小(比如说X)相同。该大小取决于SGA中各种池的大小,如缓冲区高速缓存,共享池,大型池等。如果指定的值小于X,则所使用的sga_max_size的值将为X。也就是说,它是X与用户指定的sga_max_size值两者之间的较大值。pga_aggregate_target(PGA):说明:指定连接到例程的所有服务器进程的目标PGA总内存。请在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在SGA中。数据库将此参数值用作它所使用的目标PGA内存量。设置此参数时,要将SGA从可用于Oracle例程的系统内存总量中减去。然后可将剩余内存量分配给pga_aggregate_target。值范围:整数加字母K,M或G,以将此限值指定为千字节,兆字节或千兆字节。最小值为10M,最大值为4000G默认值:"未指定",表示完全禁用对工作区的自动优化。processes:说明:指定可同时连接到一个OracleServer上的操作系统用户进程的最大数量。该值应允许执行所有后台进程,如:作业队列(SNP)进程和并行执行(Pnnn)进程。值范围:6到根据操作系统而定的一个值。默认值:由PARALLEL_MAX_SERVERS确定sessions:说明:指定用户会话和系统会话的总量。默认数量大于PROCESSES,以允许递归会话。值范围:任何整数值。默认值:派生(1.1*PROCESSES+5)内存分配与初始化参数的设置

SGA内参数设置Log_bufferLarge_pool_sizeJava_pool_sizeshared_pool_sizeDatabufferLog_buffer 对于日志缓冲区的大小设置,通常我觉得没有过多的建议,因为参考LGWR写的触发条件之后,我们会发现通常超过3M意义不是很大。作为一个正式系统,可能考虑先设置这部分为log_buffer=1—3M大小,然后针对具体情况再调整。Large_pool_size 对于大缓冲池的设置,假如不使用MTS,建议在20—30M足够了。这部分主要用来保存并行查询时候的一些信息,还有就是RMAN在备份的时候可能会使用到。如果设置了MTS,则由于UGA部分要移入这里,则需要具体根据serverprocess数量和相关会话内存参数的设置来综合考虑这部分大小的设置。Java_pool_size 假如数据库没有使用JAVA,我们通常认为保留10—20M大小足够。事实上可以更少,甚至最少只需要32k,但具体跟安装数据库的时候的组件相关(比如httpserver)。shared_pool_size 这是迄今为止最具有争议的一部分内存设置。按照很多文档的描述,这部分内容应该几乎和数据缓冲区差不多大小。但实际上情况却不是这样的。首先我们要考究一个问题,那就是这部分内存的作用,它是为了缓存已经被解析过的SQL,而使其能被重用,不再解析。这样做的原因是因为,对于一个新的SQL(shared_pool里面不存在已经解析的可用的相同的SQL),数据库将执行硬解析,这是一个很消耗资源的过程。而若已经存在,则进行的仅仅是软分析(在共享池中寻找相同SQL),这样消耗的资源大大减少。所以我们期望能多共享一些SQL,并且如果该参数设置不够大,经常会出现ora-04031错误,表示为了解析新的SQL,没有可用的足够大的连续空闲空间,这样自然我们期望该参数能大一些。但是该参数的增大,却也有负面的影响,因为需要维护共享的结构,内存的增大也会使得SQL的老化的代价更高,带来大量的管理的开销,所有这些可能会导致CPU的严重问题。在一个充分使用绑定变量的比较大的系统shared_pool_size的开销通常应该维持在300M以内。除非系统使用了大量的存储过程、函数、包,比如oracleerp这样的应用,可能会达到500M甚至更高。于是我们假定一个1G内存的系统,可能考虑设置该参数为100M,2G的系统考虑设置为150M,8G的系统可以考虑设置为200—300M。Databuffer 现在我们来谈数据缓冲区,在确定了SGA的大小并分配完了前面部分的内存后,其余的,都分配给这部分内存。通常,在允许的情况下,我们都尝试使得这部分内存更大。这部分内存的作用主要是缓存DBBLOCK,减少甚至避免从磁盘上获取数据,在8i中通常是由 db_block_buffers*db_block_size来决定大小的。如果我们设置了buffer_pool_keep和buffer_pool_recycle,则应该加上后面这两部分内存的大小。实际操作中可以根据ORACLE提供的图形界面来设置前面介绍的那些参数(如下图)oracle内存分配可以参考下面的公式: OS使用内存+SGA+并发执行进程数*(sort_area_size+hash_ara_size+2M)<0.7*总内存32bit和64bit的问题 对于oracle来说,存在着32bit与64bit的问题。这个问题影响到的主要是SGA的大小。在32bit的数据库下,通常oracle只能使用不超过1.7G的内存,即使我们拥有12G的内存,但是我们却只能使用1.7G,这是一个莫大的遗憾。假如我们安装64bit的数据库,我们就可以使用很大的内存,我们几乎不可能达到上限。但是64bit的数据库必须安装在64bit的操作系统上,可惜目windows上只能安装32bit的数据ORACLE提供了共享池的建议大小,这个值设置到大小因子为1的建议内存大小就可以了。高速缓冲区的建议设置,如下图40M哪个点就可以了,但很多情况这个建议并不准确,可以参考我下一页给的处理方式针对数据缓冲区的大小来看。首先观察命中率数据缓冲区命中率 SQL>selectvaluefromv$sysstatwherename='physicalreads'; VALUE ---------- 14764 SQL>selectvaluefromv$sysstatwherename='physicalreadsdirect'; VALUE ---------- 50 SQL>selectvaluefromv$sysstatwherename='physicalreadsdirect(lob)'; VALUE ---------- 0 SQL>selectvaluefromv$sysstatwherename='consistentgets'; VALUE ---------- 167763 SQL>selectvaluefromv$sysstatwherename='dbblockgets'; VALUE ---------- 14305 这里命中率的计算应该是 令x=physicalreadsdirect+physicalreadsdirect(lob) 命中率=100-(physicalreads-x)/(consistentgets+dbblockgets-x)*100 通常如果发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论