当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle内存分配与调整(三)
发布时间:2010/12/9 10:32:47 来源:www.xue.net 编辑:城市总裁吧
      关于内存参数的调整

  关于参数调整,是oracle的复杂性的一个具体体现。通常来讲,我们更倾向于让客户做statspack 报告,然后告诉我们os 监控的状况,在这些的信息的基础上,再向客户索取具体

  的详细信息以诊断问题的所在。系统的调整,现在我们通常采用从等待事件入手的方法。因为一个系统感觉到慢,必然是在某个环节上出现等待,那么我们从等待最多的事件入手逐步诊断并解决问题。

  对于内存的调整,相对来说简单一些,我们首先可以针对数据缓冲区的大小来看。首先观察命中率。

  数据缓冲区命中率

  SQL> select value from v$sysstat where name ='physical reads';

  VALUE

  ----------

  14764

  SQL> select value from v$sysstat where name ='physical reads direct';

  VALUE

  ----------

  50

  SQL> select value from v$sysstat where name ='physical reads direct (lob)';

  VALUE

  ----------

  0

  SQL> select value from v$sysstat where name ='consistent gets';

  VALUE

  ----------

  167763

  SQL> select value from v$sysstat where name = 'db block gets';

  VALUE

  ----------

  14305

  这里命中率的计算应该是

  令 x = physical reads direct + physical reads direct (lob)

  命中率 =100 - ( physical reads - x) / (consistent gets + db block gets - x)*100

  通常如果发现命中率低于90%,则应该调整应用可可以考虑是否增大数据缓冲区共享池的命中率

  SQL> select sum(pinhits-reloads)/sum(pins)*100 "hit radio" from v$librarycache;

  hit radio

  ----------

  99.809291

  假如共享池的命中率低于95%,就要考虑调整应用(通常是没使用bind var )或者增加内存。

  关于排序部分

  SQL> select name,value from v$sysstat where name like '%sort%';

  NAME                 VALUE

  ---------------------------------------------------------------- -------

  sorts (memory)       67935

  sorts (disk)         1

  sorts (rows)         7070

  假如我们发现sorts (disk)/ (sorts (memory)+ sorts (disk))的比例过高,则通常意味着sort_area_size 部分内存较小,可考虑调整相应的参数。

  关于log_buffer

  SQL> select name,value from v$sysstat

  2 where name in('redo entries','redo buffer allocation retries');

  NAME                           VALUE

  -----------------------        -------------------------------------

  redo entries                   2325719

  redo buffer allocation retries 10

  假如redo buffer allocation retries/ redo entries 的比例超过1%我们就可以考虑增大log_buffer

  通常来说,内存的调整的焦点就集中在这几个方面,更多更详细的内容,建议从statspack入手来一步一步调整。最后关于内存的调整,再强调这一点,一定要结合操作系统来衡量,任何理论都必须要实践来检验。在操作系统中观察page in/out 状况,发现问题严重,应该考虑调小SGA。

  32bit 和64bit 的问题

  对于oracle 来说,存在着32bit与64bit的问题。这个问题影响到的主要是SGA的大小。在32bit的数据库下,通常oracle只能使用不超过1.7G的内存,即使我们拥有12G的内存,但是我们却只能使用1.7G,这是一个莫大的遗憾。假如我们安装64bit的数据库,我们就可以使用很大的内存,我们几乎不可能达到上限。但是64bit 的数据库必须安装在64bit 的操作系统上,可惜目前windows 上只能安装32bit的数据库,我们通过下面的方式可以查看数据库是32bit 还是64bit:

  SQL> select * from v$version;

  BANNER

  ----------------------------------------------------------------

  Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

  PL/SQL Release 8.1.7.0.0 - Production

  CORE 8.1.7.0.0 Production

  TNS for 32-bit Windows: Version 8.1.7.0.0 - Production

  NLSRTL Version 3.4.1.0.0 - Production

  但是在特定的操作系统下,可能提供了一定的手段,使得我们可以使用超过1.7G 的内存,达到2G 以上甚至更多。在这里我们针对不同的平台下的具体实现方式做一个总结。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved