人的差别在于业余时间,而一个人的命运决定于晚上8点到10点之间。 北京安全测试精英QQ群:164265622 北京白盒测试精英QQ群:164265999 北京性能测试精英QQ群:164266156 北京自动化测试精英群:212723528 北京软件测试精英QQ群:86920845

oracle数据库配置问题

上一篇 / 下一篇  2011-11-02 16:27:47 / 个人分类:性能测试

È重要提示:

 1Oracle10g相对Oracle9i的一个重要进步是内存自动分配就是一般不需要进行内存调整;

2、即使是Oracle9i,内存调整还是要慎重,必须是精通数据库的人员才能调整,建议有必要的话让用户联系数据库提供商进行优化。以免调整后数据库无法启动。

本部分主要介绍运行某系统,后台oracle数据库参数优化建议,在给出优化参数之前,先要理解oracle数据库系统的内存结构,如下图:

ORACLE总内存

sga_max_size (如果只有Oracle服务,可以使用总内存35%50%)

pga_aggregate_target

 (350M-500M)

db_cache_size

(55%)

shared_pool_size

(30%)

java_pool_size

(固定为160M)

large_pool_size

((固定为20M)

processes

(300)

sessions

(335)

Open_cursors

(1000030000)

sort_area_size

(5242880)

 

可能影响数据库性能的参数如下:

2.1.参数调整数

一般的规则是:sessions数=processes*1.15,我们的推荐:

1sessions数为335

2processes数为300

3Open_cursors

推荐:1000030000。目前武汉为20000,黑龙江为30000

4sort_area_size (排序区大小)固定为52428805M

2.2.Pga内存调整

对我们的系统来说,一般需要保证一个session至少能有1M的内存,

因此pga的推荐值是350M500M

使用oracle的建议视图,协助进行PGA参数调整

下面语句可以帮助我们确定需要设定的内存大小:

select a.ESTD_PGA_CACHE_HIT_PERCENTAGE,
          a.PGA_TARGET_FOR_ESTIMATE
     from v$pga_target_advice a
     where a.ESTD_PGA_CACHE_HIT_PERCENTAGE > 95

2.3.Sga内存调整

如果只有ORACLE应用服务,Sga的值可以设置为物理内存的50%

SGA_MAX_SIZE= DB_CACHE_SIZE   + SHARED_POOL_SIZE

+ LARGE_POOL_SIZE + JAVA_POOL_SIZE

1Db_cache_size

db_cache_size确定Oracle SGA中的数据库块缓冲的数量,并且代表着Oracle内存最重要的一个参数

Db_cache_sizesga_max_size*55%

检查数据缓存命中率。如果命中率在95%以下,通常必须增大DB_CACHE_SIZE的值,检查语句如下:

select sum(decode(name, 'physical reads', value, 0)) phys,

sum(decode(name, 'db block gets', value, 0)) gets,

sum(decode(name, 'consistent gets', value, 0)) con_gets,

(1 - sum(decode(name, 'physical reads', value, 0)) /

(sum(decode(name, 'db block gets', value, 0)) +

sum(decode(name, 'consistent gets', value, 0)))) * 100 hitratio

from v$sysstat

利用建议视图

select name,

SIZE_FOR_ESTIMATE,

size_factor,

ESTD_PHYSICAL_READS,

estd_physical_read_factor

from v$db_cache_advice

原则:

ESTD_PHYSICAL_READS越小越好。SIZE_FOR_ESTIMATE越大,ESTD_PHYSICAL_READS就越小。以SIZE_FOR_ESTIMATE的代价与ESTD_PHYSICAL_READS的大小为均衡

2Shared_pool_size

shared_pool_size定义系统中由所有用户共享的池,包括SQL区域和数据字典缓存

Shared_pool_sizesga_max_size*30%

ü 保证数据字典缓存命中率高于95%。如果达不到这个值,通常需要增大SHARED_POOL_SIZE的大小。数据库刚启动时,这个命中率可能在85%左右

下面语句可以检查数据字典缓存命中率:

select ((1-(sum(getmisses)/(sum(gets)+sum(getmisses)))) * 100) "Hit Ratio"

from v$rowcache

where gets + getmisses <> 0

ü 保证库缓存命中率在95%以上;

下面语句可以检查库缓存命中率:

select sum(pins) "Hits",

sum(reloads) "Misses",

(sum(pins) / (sum(pins) + sum(reloads))) * 100 "Hit Ratio"

from v$librarycache

3Java_pool_size

Java_pool_size是为JVM里使用的java存储过程所分配的内存

Java_pool_size  的推荐值为160M

4Large_pool_size

Large_pool_size是分配给大的PL/SQL的内存

Large_pool_size的推荐值为20M

È重要提示:

参数、内存调整后,数据库启动之后,保证系统内存的利用率维持在75%-80%,如过高或者过低,再做适当微调。

 


TAG:

 

评分:0

我来说两句

Open Toolbar