发现sort(disk)数值较高时,应增加sort_area_size的内存大小
4、重做日志缓冲区
select name,value from V$sysstat where name='redo log space requests'
该查询结构的vlue值应接近于零,否则每次将log_buffer增大5%.不过不需要超过3M,超过3M无效。
三、 命中率相关的Statspack数据表作用介绍
1、stats$buffer_pool_statistics该表是记录缓冲池使用情况
free_buffer_wait 等待自由缓冲的数量计数
buffer_busy_wait 因冲突而不能够请求道数据块的次数
db_block_gets 数据块获取的数量
consistent_gets 逻辑读入的数量
physical_reads oracle发出的磁盘块获取数量
physical_writes oracle请求的物理磁盘写入的数量
2、stats$librarycache该表是保存库缓存活动信息
namespace 命名空间,值可以是sql区域、表、过程、包、触发器
pin 统计库缓存中对象的执行次数
reloads 统计解析在表示库缓存中不存在,并强制oracle分配私有sql区域来解析和执行语句的次数。
3、stats$rowcache_summary该表来度量辞典缓存活动
gets 提供请求这种类型对象的全部数量
getmisses 统计oracle不得不执行磁盘I/O来从它辞典表中获取行的次数。
四、 使用statspack获得和分析命中率
1. 获得数据缓存区命中率
使用rpt_bhr_all.sql脚本在stats$buffer_pool_statistics表中获取每次快照的命中率值、
要获得命中率趋势数据,可以按每天小时和每星期每天做分析。
使用rpt_bhr8i_hr.sql按照每小时的平均值给予。使用rpt_bhr8i_dy.sql按照每天的一个星期中各天的平均值给予。
2. 库缓存缺失率
Sql语句的编译包括了两个阶段:解析阶段和执行阶段,当解析一个sql语句的时候,oracle首先会检查在库缓存中是否已经存在解析过的语句表示,如果没有,oracle就会在库缓存中分配一块共享sql区域,然后解析sql语句。因而sql尽量少的解析过程可以提高性能。
通过rpt_lib_miss.sql脚本分析stats$librarycache表可以查看缺失率情况。
库缓存命中率是由所有载入到ram缓冲的辞典对象所决定,这些对象包括表/过程、触发器、索引、包以及簇,这些对象都不应该在库缓存内发生问题。
通过rpt_lib.sql脚本可以显示各个快照期间库缓存内对象的细节活动。
3. 数据辞典缓存率
数据辞典缓存用来保存来自内部的oracle元数据表的行,包括在包中存储的sql,每一次对sql语句进行解析以及sql收集动态存储进行执行的时候,都要访问数据辞典缓存。rpt_dict_alert.sql,rpt_dict_dy.sql,rpt_dict_detail.sql,rpt_dict_detail_alert.sql
注:
1.以上所有脚本执行的结果,放到execle上,做成图形可以做成很好的趋势图。
文章来源于领测软件测试网 https://www.ltesting.net/