動態性能視圖主要是Oracle數據的庫自動收集並記錄當前例程的活動信息當數據庫管理員啟動某個例程時數據庫會自動建立動態性能視圖;當停止某個例程時數據庫又會自動刪除這些動態性能視圖這表面看起來跟數據字典有異曲同工之妙但是兩者信息的來源還是有很大差異的數據字典的信息是從數據文件中取得;而動態性能視圖的信息則是從SGA內存以及控制文件中取得所以兩者所反映的信息還是有很大差異的數據庫管理員利用這些動態性能視圖可以了解數據庫運行的一些基本信息為我們進行數據庫維護以及數據庫性能優化提供一些數據上的支持一般情況下我們可以通過動態性能數據掌握兩類重要的數據庫運行信息一是了解數據庫運行相關的性能數據如內存的使用量磁盤排序發生的機率等等二是取得與磁盤和內存結構相關的其他信息這些信息將是我們進行數據庫維護與數據庫性能調整的主要參考依據
為了便於數據庫管理員查詢這些動態視圖Oracle數據庫中的動態性能視圖跟其他數據庫對象有著不同的命名規則通常情況下動態性能視圖都是以V_$前綴開頭的並且Oracle數據庫維每個動態性能視圖提供了相應的同義詞下面筆者就介紹一些動態性能視圖查詢中的一些技巧以幫助廣大數據庫管理員提高對Oracle數據庫動態性能視圖的認識
一知道可用的動態性能視圖
因為動態性能視圖是隨著例程的啟動而啟動隨著例程的消亡而消亡其是動態變化的所以對於一些動態性能視圖不怎麼了解的數據庫管理員來說第一步就是需要了解現在數據庫中到底有哪些動態性能視圖可以用Oracle數據庫中有一張V_$fixed_table動態性能視圖這張視圖中紀錄著當前所有可用的動態性能視圖當數據庫管理員對動態性能不怎麼了解的話可以先通過這張視圖了解動態性能視圖的概況並了解哪些動態性能視圖當前是可用的數據庫管理員可以通過下面的命令查詢當前可用的所有動態性能視圖
在通常情況下數據庫不同的狀態其動態性能視圖還是有比較大的差異數據庫管理員掌握這些差異對於他們借助這些視圖來管理數據庫可能會有更大的幫助
一是數據庫處於NOMOUNT狀態數據庫啟動例程時Oracle數據庫會打開參數文件分配SGA內存並啟動後台進程此時其實數據庫還沒有掛栽此時動態性呢視圖收集的信息來源只有是SGA而不會從控制文件中收集相關的信息所以動態性能視圖的數量要少得多
二是當數據庫處於MOUNT狀態時數據庫會根據初始化參數打開所有的控制文件所以當例程處於Mount狀態時動態性能視圖其收集到的信息就要第一個狀態多的多因為此時動態性能視圖還會去收集控制文件的相關信息不過此時動態性能視圖所收集到的資料還不是最全的
三是當用戶打開數據庫時Oracle系統會根據控制文件所記載的信息去打開所有的數據庫文件以及重做日志此時數據庫管理員除了可以從SGA和控制文件中獲取信息的動態性能視圖外還可能訪問與Oracle數據庫性能相關的動態性能視圖如會話等待時間等視圖另外需要注意一點就是只有在這個狀態時我們才能夠訪問數據庫的數據字典視圖
我們在維護數據庫或者調整數據庫性能時數據庫管理員需要經常訪問這些動態性能視圖以取得例程的動態信息故數據庫管理員需要對一些常用的動態性能視圖有一定的了解只有如此在能夠在需要的時候及時的了解自己所需要的信息
From:http://tw.wingwit.com/Article/program/Oracle/201311/17253.html