ORACLE 10g RAC SGA自动管理模式下如何固定db buffer cache和shared pool的大小

本文介绍如何根据数据库I/O负载情况调整Oracle的db_cache_size和shared_pool_size参数,以提高数据库性能。并提供了一步步的修改指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

何时需要手动设置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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值