在數據庫啟動2小時后,可以通過以下SQL來測試數據庫性能
1. 緩沖區(qū)命中率: 緩沖區(qū)命中率表示在不需要進行磁盤訪問的情況下在內存結構中找到常用數據塊的頻率
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動態(tài)調整工作區(qū)PGA內存的大小(以SGA內存大小的20%為基礎)。在自動PGA內存管理模式下運行時,所有會話的工作區(qū)大小都是自動的。實例中活動工作區(qū)可用的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. 空閑的數據緩沖區(qū)的比例
從您首次啟動Oracle數據庫的那一天開始,用戶們的查詢就開始使用內存??臻e的記錄數除以X$BH表中的記錄總數(即所分配的數據塊緩沖區(qū)的總數)就得到這個百分比。同時請注意,您必須以SYS的權限來運行該查詢。此外,擁有眾多的空閑緩沖區(qū)并不一定是就最佳環(huán)境。5%-10% 為最佳。當空閑比例高于25%時,數據緩沖區(qū)設置得太大了,可能會浪費資源。
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》