oracle11gr2+系统在 windows service 2008 r2 enterprise
我很奇怪的是在查看参数的时候,第一是自动分配的sga_target=0没有启动 ,然后 shared_pool_size,db_cache_size value,db_block_buffers都等于0 ?
我不明白,这样不就影响到性能吗,还是说还有其他参数可以指定内存大小的。
接着查buffer cache命中率,结果如下:
select (1-(sum(decode(name, 'physical reads',value,0))/(sum(decode(name, 'db block gets',value,0))
         +sum(decode(name,'consistent gets',value,0))))) * 100 "Hit Ratio"  from v$sysstat;
 Hit Ratio
98.4204183083562
求大神指教一下。

解决方案 »

  1.   

    看一下v$sga_dynamic_components、
    为0有可能是自动管理的,实际不是0
      

  2.   

    11g之后新增了一个参数memory_target
    oracle根据这个参数动态分配SGA和PGA的大小。
      

  3.   

    显然这个是11G的自动内存管理模式,所以SGA和PGA都是自动分配的,通过查看V$SGA可以看到SGA当前的大小的
      

  4.   

    谢谢楼上的几位。 memory_target是自动分配SGA+PGA 的,SGA_target是自动分配SGA的内存。我看了一下memory_target是有值的20864M,但是sga_target=0。
    是不是可以这么理解,memory_target已经管理了整个内存,包括分配sga下面的内存,所以可以不指定下面的缓存池的大小??
    那么这个memory_target是在哪里设置的?
    那么我还能为shared_pool_size指定大小,还是只能设置shared_pool_reserved_size的值大小?
    如果为共享池指定大小还算是自动管理范畴吗?
      

  5.   

    但是我刚刚给db_cache_size赋值成功了,这个值有意义吗?
    还是说是分配个buffer cache的最小值呢?
      

  6.   

    看了资料解决了
    The preceding steps instruct you to set SGA_TARGET and PGA_AGGREGATE_TARGET to zero so that the sizes of the SGA and instance PGA are tuned up and down as required, without restrictions. You can omit the statements that set these parameter values to zero and leave either or both of the values as positive numbers. In this case, the values act as minimum values for the sizes of the SGA or instance PGA.
    如果给指定值的话,会认为是分配最小的值。