现在的位置: 首页 > 综合 > 正文

oracle参数调整

2013年07月28日 ⁄ 综合 ⁄ 共 1469字 ⁄ 字号 评论关闭
 

*DB_BLOCK_BUFFERS:该参数定义内存中高速缓存的数据库块缓冲区的数目。高速缓存越大,oracle可装入内存的数据就越多,磁盘的IO就越少,系统的性能就越好。
通过计算高速缓冲区命中率,可以知道DB_BLOCK_BUFFERS是否足够。计算命中率的基本思路为:命中率=(逻辑读次数-物理读次数)/逻辑读次数。
数据字典V$SYSSTAT中记录了系统的逻辑读和物理读次数,检索语句如下:
Select name,value from v$sysstat
Where name in(‘db block gets’,’consistent gets’,’physical reads’);
对于一般的应用环境,要求此值大于80%,当命中率低于80%时,需要增加DB_BLOCK_BUFFERS。
而当DB_BLOCK_BUFFERS增加到一定的数值后,再增加此值,对系统性能的提高微乎其微,但却浪费了有限的内存资源。在系统内存资源有限,同时高速缓冲区命中率很高的情况下,可以考虑减少一定数量的DB_BLOCK_BUFFERS。
*SHARED_POOL_SIZE(共享缓冲池大小):此参数是定义内存中LIBRARYCACHE(存放共享SQL和PLSQL,是SGA共享SQL池的一部分)和DATA DICTIONARY CACHE的字节数量,library cache和data dictionary cache的大小只能通过shared_pool_size间接调整。
数据字典v$librarycache中存储着SQL的执行次数和解析次数,解析次数和执行次数的比值应该小于0.01,理想值为0,否则要加大SHARED_POOL_SIZE的值。
Select sum(reloads)/sum(pins) * 100 from v$librarycache;
动态性能表v$rowcache跟踪cache的执行,要求失败(misses)和获得(gets)的比值应当很低。Select sum(getmisses)/sum(gets)*100 from v$rowcache的结果值要小于15,否则要加大shared_pool_size.
*LOG_BUFFER此参数是用来定义内存中重做日志缓冲区的大小,虽然它相对SGA较小,但是此值太小时,LGWR进程会频繁将LOG BUFFER中的数据写入磁盘,增加IO次数,影响系统性能。
Select name, value from v$sysstat where name = ‘redo buffer space requests’得到的Value值应该为0,否则应该增加log_buffer参数的值以使得该值为0.但是log_BUFFER的值大于3M是没有意义的。
*sort_area_size:指定用户进程内用来排序的内存大小,它是PGA的一部分,对于含有大量索引数据的排序,内存中的sort area可能不能完全放下全部排序数据,此时oracle不得不在磁盘上完成这一处理,这样将引起大量的磁盘操作而影响系统性能。V$sysstat表记载有系统的排序信息,通过查看此动态视图可确定是否有大量的排序是在磁盘上完成的,从而决定修改此参数。此参数可以动态调整,alter session改变当前会话, alter system deferred为数据库的所有后续进程更改此参数。
Select name,sum(value) from v$sysstat where name like ‘sort%’ group by name;
如果有相当多的排序在磁盘上进行,应增大sort_area_size的数值。

抱歉!评论已关闭.