在数据库启动2小时后,可以通过以下SQL来测试数据库性能
1. 缓冲区命中率: 缓冲区命中率表示在不需要进行磁盘访问的情况下在内存结构中找到常用数据块的频率
select (1-(sum(decode(name, 'physical reads',value,0))/(sum(decode(name, 'db block gets',value,0)) 大于98%为最佳
2.数据字典缓存命中率: 数据字典缓存命中率显示了对数据字典和其他对象的内存读操作所占的百分比。
select (1-(sum(getmisses)/sum(gets))) * 100 "Hit Ratio" from v$rowcache; 大于98%为最佳
库缓存命中率显示了对实际语句和PL/SQL对象的内存读操作所占的百分比。注意,很高的命中率并不总是一件好事。
select Sum(Pins)/(Sum(Pins) + Sum(Reloads)) * 100 "Hit Ratio" from V$LibraryCache; 大于98%为最佳
4.PGA内存排序命中率 自动PGA内存管理简化了分配PGA内存的方法。Oracle动态调整工作区PGA内存的大小(以SGA内存大小的20%为基础)。在自动PGA内存管理模式下运行时,所有会话的工作区大小都是自动的。实例中活动工作区可用的PGA内存总量自动由SORT_AREA_SIZE或PGA _ AGGREGATE_ TARGET(首选)初始化参数导出。PGA内存排序率的值应该大于98%。依据初始化参数PGA_AGGREGATE_TARGET(或者用于向后兼容的SORT _AREA _ SIZE)的值,用户排序可能在内存或者在指定的临时表空间中的磁盘上完成,如果这个初始化参数不是太高的话。
select a.value "Disk Sorts", b.value "Memory Sorts",round((100*b.value)/decode((a.value+b.value),0,1,(a.value+b.value)),2)"Pct Memory Sorts" from v$sysstat a, v$sysstat b where a.name = 'sorts (disk)'and b.name = 'sorts (memory)';
5. 空闲的数据缓冲区的比例
从您首次启动Oracle数据库的那一天开始,用户们的查询就开始使用内存。空闲的记录数除以X$BH表中的记录总数(即所分配的数据块缓冲区的总数)就得到这个百分比。同时请注意,您必须以SYS的权限来运行该查询。此外,拥有众多的空闲缓冲区并不一定是就最佳环境。5%-10% 为最佳。当空闲比例高于25%时,数据缓冲区设置得太大了,可能会浪费资源。
select decode(state,0, 'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'),3, 'BEING USED', state) "BLOCK STATUS",count(*) from x$bh group by decode(state,0,'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'),3, 'BEING USED', state);
6. 最浪费内存的前10个语句占所有语句的比例
select sum(pct_bufgets) "Percent" from (select rank() over ( order by buffer_gets desc ) as rank_bufgets,to_char(100 * ratio_to_report(buffer_gets) over (),'999.99') pct_bufgets from v$sqlarea ) where rank_bufgets < 11; 小于5%为最佳。
7.调整滥用磁盘读操作的主要语句
select disk_reads, substr(sql_text,1,4000) from v$sqlarea order by disk_reads desc;
|
|
来自: guolijiegg > 《oracle》