Oracle中内存的设置分为两种:自动管理内存,手动管理内存。
本文摘自 《涂抹Oracle》 【三思笔记一步一步学习Oracle】 。
一、自动管理
自动管理只需要分别设置SGA和PGA即可。这两个值分别对应参数SGA_TARGET和PGA_AGGREGATE_TARGET,Oracle退出SGA_TARGET的本意是简化操作,提高易用性,提升性能,在某种程度上确实达到了这一目标。对中小型数据库可以让Oracle自动分配SGA。
关于SGA、PGA于系统内存三者的关联,目前有一个相对通用的计算规则可供参考:
⊙ 对于OLTP数据库,SGA=系统内存*70%*80%,PGA=SGA*(10%~20%)。
⊙ 对于OLAP数据库,SGA=系统内存*80%*60%,PGA=SGA*(45%~65%)。
注意:对于32bit平台,默认情况下SGA最大可用内存有1.7GB的限制,也就是说在32bit平台中,即使为SGA分配了超过这个值的内存也是不可用的。
对于一些超大型的数据库服务器都拥有数十G和百G的内存,这时候自动分配内存的效果不一定是最优的。
二、手动管理
⊙ 共享池:用来存放Library Cache,编译过的SQL、PL/SQL等内容,不能过大,否则有可能造成自身管理上负担,带来反效果。通常在300~500M之间比较适当,对应初始化参数值SHARED_POOL_SIZE。
⊙ 缓冲区高速缓存:数据库中数据从磁盘中读取后就存放在这个内存中,我们都知道在内存中数据的读写要比在磁盘中读写I/O速度要快N多倍。因此该值越大越好。所有空闲内存都可以分配给它。对应初始化参数:DB_CACHE_SIZE。
⊙ Java池: 如果数据库没java procedure或者没有选择Oracle JVM组件,该值设置为0也可以。如果有的话,该值也不需要很大。对应初始化参数:JAVA_POOL_SIZE。
⊙ 大型池:主要应用于直接路径的导入和导出、RMAN备份等。相对来说应用范围有限,不需要很大,一般在100M~200M即可。对应初始化参数:LARGE_POOL_SIZE。
⊙ PGA大小:对应初始化参数 PGA_AGGREGATE_TARGET。
阅读(2009) | 评论(0) | 转发(0) |