V$ROWCACHE
本視圖顯示數據字典緩存(也叫rowcache)的各項統計每一條記錄包含不同類型的數據字典緩存數據統計注意數據字典緩存有層次差別因此同樣的緩存名稱可能不止一次出現
V$ROWCACHE常用列
PARAMETER緩存名
COUNT緩存項總數
USAGE包含有效數據的緩存項數
GETS請求總數
GETMISSES請求失敗數
SCANS掃描請求數
SCANMISSES掃描請求失敗次數
MODIFICATIONS添加修改刪除操作數
DLM_REQUESTSDLM請求數
DLM_CONFLICTSDLM沖突數
DLM_RELEASESDLM釋放數
使用V$ROWCACHE數據
>確認數據字典緩存是否擁有適當的大小如果shared pool過小那數據字典緩存就不足以擁有合適的大小以緩存請求信息
> 確認應用是否有效訪問緩存如果應用設計未能有效使用數據字典緩存(比如大數據字典緩存並不有助於解決性能問題)例如DC_USERS緩存在過去某段時期內出現大量GETS看起來像是數據庫中創建了大量的不同用戶並且應用記錄下用戶頻繁登陸和注銷通過檢查logon比率以及系統用戶數可以驗證上述數據同時解析比率也會很高如果這是一個大型的OLTP系統的中間層它可能在中間層更有效的管理個別帳戶允許中間層以單用戶登陸成為應用所有者通過保持活動連接來減少logon/logoff比率也同樣有效
>確認是否發生動態空間分配DC_SEGMENTS DC_USED_EXTENTS 以及DC_FREE_EXTENTS大量的類似大小修改將指出存在大量動態空間分配可行的解決方案包括指定下一個區大小或者使用本地管理表空間如果發生空間分配的是臨時的表空間則可以為其指定真正的臨時表空間(If the space allocation is occurring on the temp tablespace then use a true temporary tablespace for the temp )
>dc_sequences值的變化指出是否大量sequence號正在產生
>搜集硬解析的證據硬解析常表現為大量向DC_COLUMNS DC_VIEWS 以及 DC_OBJECTS caches的gets
示例
分組統計數據字典統計項
SELECT parametersum(COUNT)sum(usage)sum(gets)sum(getmisses)
sum(scans)sum(scanmisses)sum(modifications)
sum(dlm_requests)sum(dlm_conflicts)sum(dlm_releases)
FROM V$ROWCACHE
GROUP BY parameter;
檢查數據字典的命中率
select sum(getmisses) / sum(gets) data dictionary hitratio from v$rowcache;
From:http://tw.wingwit.com/Article/program/Oracle/201311/17313.html