1,查看曲线,找出适合的值
一般情况下,我们选取estd_physical_read_factor为1的值为最佳,或者为sga_max_size/2~sga_max_size*2/3。
select size_for_estimate "Cache Size (MB)",size_factor,buffers_for_estimate "buffers",
estd_physical_read_factor est_read_factor,
estd_physical_reads estd_phy_red,estd_physical_read_time est_phy_red_t
from v$db_cache_advice
where name='DEFAULT' and block_size =(select value from v$parameter where name='db_block_size');
2,查看sga的最大值
show parameter sga_max_size;
如果大小不够,扩大sga大小。
alter system set sga_max_size=xxxM scope=spfile;
再设置sga大小
alter system set sga_target=xxxM scope=spfile;
3,重启数据库
4,设置bufferCache大小
alter system set db_cache_size=xxxM scope=both;
完成。
关于scope参数的设置:
应该是scope=both和scope=spfileOracle
里面有个叫做spfile的东西,就是动态参数文件,里面设置了Oracle 的各种参数。
所谓的动态,就是说你可以在不关闭数据库的情况下,更改数据库参数,记录在spfile里面。
更改参数的时候,有4种scope选项,scope就是范围。
1,scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改。
2,scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了。
3,scope=both 内存和spfile都更改。
4,不指定scope参数,等同于scope=both。