Oracle内存缓冲区合理大小的判定方法
2009-07-14 23:52
363 查看
转贴部分内容,氡马自己总结了部分内容
【查看Oracle建议的缓冲区设置】
Oracle自身提供了一个缓冲区建议值的视图v$db_cache_advice,要查看Oracle对缓冲区的建议值使用如下SQL语句:
select block_size, size_for_estimate, size_factor, estd_physical_read_factor, estd_physical_reads from v$db_cache_advice;
例如得到如下结果:
SIZE_FOR_ESTIMATE SIZE_FACTOR ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
20 0.0893 6.1454 270840
40 0.1786 3.0632 135003
60 0.2679 2.4908 109775
80 0.3571 2.1411 94362
100 0.4464 1.9619 86464
120 0.5357 1.8235 80366
140 0.625 1.6081 70873
160 0.7143 1.5038 66275
180 0.8036 1.3957 61510
200 0.8929 1.1541 50861
220 0.9821 1.0089 44465
224 1 1 44072
240 1.0714 0.8524 37568
260 1.1607 0.8184 36068
280 1.25 0.7965 35103
300 1.3393 0.793 34948
320 1.4286 0.7908 34853
340 1.5179 0.7905 34841
360 1.6071 0.7905 34841
380 1.6964 0.7905 34841
400 1.7857 0.7873 34698
解释一下v$db_cache_advice的作用,Oracle利用这个视图对当前数据库db_cache_size大小提出一建议,提出了20个db_cache_size大小及相关的物理读的估计值,估计的db_cache_size大小的范围从当前的10%到200%,以10%为一个增加单位。
下面解释几个列的含义
size_for_estimate:估计的cache size大小
size_factor: 估计的cache size大小与当前大小的比值
estd_physical_reads:在估计的cache size大小情况下,会产生的物理读数量
estd_physical_read_factor:估计的物理读数量与当前物理读数量的比值。
从上面的数据中可以看到,当前db_cache_size为224M,其物理读为44072,增加cache size大小会减少物理读,当cache size到340M时,物理读的减少不再明显,因此db_cache_size大小为340M在目前情况下是一个合适的值。
由于这里用的是自动共享内存管理方式,应该增加sga_target,这样db_cache_size大小会相应增加,要增加sga_target要先增加sga_max_size。
【修改数据库参数方法】
在Oralce用户下,使用sqlplus "/as sysdba"登录,注意引号。
在提示符下输入show parameter则可以看到所有参数,如果要看一个具体参数,如db_cache_size则使用showparameter db_cache_size
如果要修改一个参数的值则使用:
ALTER SYSTEM SET sga_max_size=600M scope=spfile;
【与缓冲区有关数据库参数】
sga_max_size,限定SGA的大小
sga_target,设定SGA的实际大小
db_cache_size,设定Oracle内存缓冲区的大小
【查看Oracle建议的缓冲区设置】
Oracle自身提供了一个缓冲区建议值的视图v$db_cache_advice,要查看Oracle对缓冲区的建议值使用如下SQL语句:
select block_size, size_for_estimate, size_factor, estd_physical_read_factor, estd_physical_reads from v$db_cache_advice;
例如得到如下结果:
SIZE_FOR_ESTIMATE SIZE_FACTOR ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
20 0.0893 6.1454 270840
40 0.1786 3.0632 135003
60 0.2679 2.4908 109775
80 0.3571 2.1411 94362
100 0.4464 1.9619 86464
120 0.5357 1.8235 80366
140 0.625 1.6081 70873
160 0.7143 1.5038 66275
180 0.8036 1.3957 61510
200 0.8929 1.1541 50861
220 0.9821 1.0089 44465
224 1 1 44072
240 1.0714 0.8524 37568
260 1.1607 0.8184 36068
280 1.25 0.7965 35103
300 1.3393 0.793 34948
320 1.4286 0.7908 34853
340 1.5179 0.7905 34841
360 1.6071 0.7905 34841
380 1.6964 0.7905 34841
400 1.7857 0.7873 34698
解释一下v$db_cache_advice的作用,Oracle利用这个视图对当前数据库db_cache_size大小提出一建议,提出了20个db_cache_size大小及相关的物理读的估计值,估计的db_cache_size大小的范围从当前的10%到200%,以10%为一个增加单位。
下面解释几个列的含义
size_for_estimate:估计的cache size大小
size_factor: 估计的cache size大小与当前大小的比值
estd_physical_reads:在估计的cache size大小情况下,会产生的物理读数量
estd_physical_read_factor:估计的物理读数量与当前物理读数量的比值。
从上面的数据中可以看到,当前db_cache_size为224M,其物理读为44072,增加cache size大小会减少物理读,当cache size到340M时,物理读的减少不再明显,因此db_cache_size大小为340M在目前情况下是一个合适的值。
由于这里用的是自动共享内存管理方式,应该增加sga_target,这样db_cache_size大小会相应增加,要增加sga_target要先增加sga_max_size。
【修改数据库参数方法】
在Oralce用户下,使用sqlplus "/as sysdba"登录,注意引号。
在提示符下输入show parameter则可以看到所有参数,如果要看一个具体参数,如db_cache_size则使用showparameter db_cache_size
如果要修改一个参数的值则使用:
ALTER SYSTEM SET sga_max_size=600M scope=spfile;
【与缓冲区有关数据库参数】
sga_max_size,限定SGA的大小
sga_target,设定SGA的实际大小
db_cache_size,设定Oracle内存缓冲区的大小
相关文章推荐
- [转]Oracle内存缓冲区合理大小的判定方法
- Oracle的日志缓冲区大小查询方法———学习笔记
- tomcat绿色版及安装版修改内存大小的方法
- linux下查看内存条数及每根内存大小的实现方法(推荐)
- ORACLE配置数据库内存大小
- C99的snprintf() 提供了预测所需缓冲区大小的方法
- Oracle 估算数据库大小的方法
- oracle 增加表空间大小的四种方法
- STM32内存大小与地址的对应关系以及计算方法
- float double的内存表示及比较大小的方法
- Oracle增加表空间大小的方法
- 详细的内存大小识别方法?
- java计算内存的大小方法
- linux top命令查看用户内存大小方法
- Oracle 查看表空间的大小及使用情况sql语句和oracle增加表空间大小两种实现方法
- Android编程实现获得内存剩余大小与总大小的方法
- Android 获取app应用大小、手机内存信息、删除文件方法、获得文件大小
- Linux和Windows中tomcat修改内存大小的方法
- 检测内存大小的方法
- tomcat绿色版及安装版修改内存大小的方法