發現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上,做成圖形可以做成很好的趨勢圖。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/