何时需要手动设置db cache size和shared pool size
数据库的I/O较繁忙时,db cache size大一点有好处。
oracle 10g 在set sga_target<>0的情况下,shared pool size 可能会变得很大,一般2G以内是比较合理的,
如果超过了2G,则oracle内存利用率已经体现的微乎其微了,因为此时的散列算法会产生很多的碰撞,效率
大大降低。可以给db_cache_size设置一个值,这样的话,这个值就是最低要满足的值。shared_pool可以逐渐缩小。
修改步骤
用一系列命令更改spfile
>
>SQL> show parameter spfile;
>
>NAME TYPE VALUE
>------------------------------------ ----------- ------------------------------
>spfile string +DG1/racdb/spfileracdb.ora
>
>SQL> show parameter sga
>
>NAME TYPE VALUE
>------------------------------------ ----------- ------------------------------
>lock_sga boolean FALSE
>pre_page_sga boolean FALSE
>sga_max_size big integer 600M
>sga_target big integer 600M
>
>SQL> show parameter size
>
>NAME TYPE VALUE
>------------------------------------ ----------- ------------------------------
>db_cache_size big integer 0
>shared_pool_size big integer 100M
>
>SQL> select * from v$sga;
>
>NAME VALUE
>-------------------- ----------
>Fixed Size 1269040
>Variable Size 255853264
>Database Buffers 369098752
>Redo Buffers 2924544
>
>SQL> alter system set sga_target=0 sid='racdb2';
>System altered.
>
>SQL> show parameter size;
>
>NAME TYPE VALUE
>------------------------------------ ----------- ------------------------------
>db_cache_size big integer 352M
>shared_pool_size big integer 236M
>
>SQL> alter system set shared_pool_size=150M scope=spfile sid='racdb2';
>System altered.
>
>SQL> alter system set db_cache_size=430M scope=spfile sid='racdb2';
>System altered.
>
>SQL> alter system set sga_target=600M sid='racdb2';
>System altered.
>
>SQL> shutdown immediate;
>Database closed.
>Database dismounted.
>ORACLE instance shut down.
>
>SQL> startup;
>ORACLE instance started.
>
>Total System Global Area 633339904 bytes
>Fixed Size 1269064 bytes
>Variable Size 167772856 bytes
>Database Buffers 461373440 bytes
>Redo Buffers 2924544 bytes
>Database mounted.
>Database opened.
注意
有时alter system set db_cache_size=430M scope=spfile sid='racdb2';
并不能执行成功,原因是oracle在sga auto management 模式下已经分配了一部分内存,当指定的db cache size大小与当前矛盾时,oracle会报错。保守的办法是通过改pfile来修改db cache size 和 shared pool size,要删除pfile中的以‘__’开头的隐含SGA相关参数,然后设置db cache size , shared pool size。startup pfile=''。最后再设置回spfile。