賽迪網 > IT技術 數據庫 > 精彩更新
  IT資訊搜索
 
IT產品搜索

Oracle 10g自動工作負載資訊庫剖析 (1)

發佈時間:2007.01.26 04:39     來源:ChinaITLab    作者:ChinaITLab

學習使用新的特性,這些特性採集數據庫性能統計數據和量度,以供分析和調整,並顯示在數據庫中花費的準確時間,甚至保存會話資訊。當您有數據庫性能問題時,要解決它您首先要作的是什麼?一種常見的方法是看是否存在一種模式:回答諸如“相同的問題是否重復出現?”,“它是否在某個特定的時間段出現?”和“兩個問題之間是否有聯繫?”之類的問題,將幾乎總會帶來更好的診斷結果。

作為一個數據庫管理員,您可能已經投資購買了第三方工具或使用自己開發的工具來在數據庫運行期間採集詳細的統計數據,並從這些統計數據中導出獲得性能量度。在緊急的情況下,您可以訪問這些量度來與當前的情況作比較。再度查看這些過去的事件可以給當前的問題帶來一些啟發,因此不斷採集相關的統計數據對於性能分析變得很重要。

一段時間以來,Oracle 在這個領域中的解決方案是它內置的工具 Statspack。雖然某些情況下證明它是非常有價值的,但常常缺少性能故障診斷實踐所需的強健性。Oracle Database 10g 提供了一個顯著改進的工具:自動工作負載資訊庫 (AWR)。AWR 和數據庫一起安裝,不但採集統計數據,還採集導出的量度。

快速測試驅動程式

通過運行 $ORACLE_HOME/rdbms/admin 目錄中的 awrrpt.sql 腳本,AWR 的功能可以立即通過它從採集的統計數據和量度中生成的報表得到最好的說明。這個腳本從外觀和感覺上類似于 Statspack,它顯示所有的現有 AWR 快照並請求兩個特定的快照作為時間間隔邊界。它產生兩種類型的輸出:文本格式(類似于 Statspack 報表的文本格式但來自於 AWR 資訊庫)和默認的 HTML 格式(擁有到部分和子部分的所有超鏈結),從而提供了非常用戶友好的報表。現在運行該腳本以查看報表,從而對 AWR 的功能有一個了解。

實施

現在,讓我們來看看 AWR 是如何設計和構建的。AWR 實質上是一個 Oracle 的內置工具,它採集與性能相關的統計數據,並從那些統計數據中導出性能量度,以跟蹤潛在的問題。與 Statspack 不同,快照由一個稱為 MMON 的新的後臺進程及其從進程自動地每小時採集一次。為了節省空間,採集的數據在 7 天后自動清除。快照頻率和保留時間都可以由用戶修改。要查看當前的設置,您可以使用下面的語句:

  
  select snap_interval, retention
  from dba_hist_wr_control;
  
  SNAP_INTERVAL    RETENTION
  ------------------- -------------------
  +00000 01:00:00.0  +00007 00:00:00.0
  

這些 SQL 語句顯示快照每小時採集一次,採集的數據保留 7 天。要修改設置 — 例如,快照時間間隔為 20 分鐘,保留時間為兩天 — 您可以發出以下命令。參數以分鐘為單位。

  
  begin
    dbms_workload_repository.modify_snapshot_settings (
     interval => 20,
     retention => 2*24*60
    );
  end;
  

AWR 使用幾個表來存儲採集的統計數據,所有的表都存儲在新的名稱為 SYSAUX 的特定表空間中的 SYS 模式下,並且以 WRM$_* 和 WRH$_* 的格式命名。前一種類型存儲元數據資訊(如檢查的數據庫和採集的快照),後一種類型保存實際採集的統計數據。(您可能已經猜到,H 代表“歷史數據 (historical)”而 M 代表“元數據 (metadata)”。)在這些表上構建了幾種帶前綴 DBA_HIST_ 的視圖,這些視圖可以用來編寫您自己的性能診斷工具。視圖的名稱直接與表相關;例如,視圖 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上構建的。

  AWR 歷史表採集的資訊比 Statspack 多許多,這些資訊包括表空間使用率、文件系統使用率、甚至作業系統統計數據。這些表的完整的列表可以通過以下命令從數據字典中看到:

  
  select view_name from user_views where 
    view_name like 'DBA\_HIST\_%' escape '\';
  

視圖 DBA_HIST_METRIC_NAME 定義 AWR 採集到的重要的量度、它們所屬的組和採集它們的單位。例如,下面是一個記錄(豎直格式):

  
  DBID         : 4133493568
  GROUP_ID       : 2
  GROUP_NAME      : System Metrics Long Duration
  METRIC_ID       : 2075
  METRIC_NAME      : CPU Usage Per Sec
  METRIC_UNIT      : CentiSeconds Per Second
  

它顯示一個量度“每秒 CPU 使用率”以“每秒的厘秒數”為單位進行測量,並且該量度屬於一個量度組 “System Metrics Long Duration”。這條記錄可以和其他的表(如 DBA_HIST_SYSMETRIC_SUMMARY)結合,以獲得數據庫的活動資訊,形式如下:

  
select begin_time, intsize, num_interval, 
minval, maxval, average, standard_deviation sd 
from dba_hist_sysmetric_summary where metric_id = 2075;
  
BEGIN  INTSIZE NUM_INTERVAL  MINVAL MAXVAL AVERAGE      SD
----- ---------- ------------  ------- ------- -------- ----------
11:39   179916      30     0   33    3 9.81553548
11:09   180023      30    21   35    28 5.91543912
  
... and so on ...
  

下面我們看看 CPU 時間是如何消耗的(以厘秒為單位)。標準差加入到了我們的分析中,它有助於確定平均數字是否反映了實際的工作負載。在第一條記錄中,平均值是每秒消耗 CPU 時間 3 厘秒,但標準差是 9.81,這意味著平均值 3 不能反映工作負載。在第二個例子中,平均值為 28,標準差為 5.9,這更具有代表性。這種類型的資訊趨勢有助於了解幾個環境參數對性能量度的影響。

1 2 下一頁>>


[ 發表評論 ] 字體[  ] [ 列印 ] [ 進入博客 ] [ 進入論壇 ]  [ 推薦給朋友 ]
  相關文章
· 甲骨文新推Oracle Linux管理套裝軟體 (01-25) · Oracle的CRM武器--讓數據圍著銀行轉 (01-24)
· SQL Server和Oracle數據鎖定比較 (01-24) · Oracle基於Client/Server的性能調整 (01-24)
· Linux平台下監控Oracle數據庫性能 (01-24) · Oracle中PL/SQL編程對系統性能的影響 (01-24)
· 專家調優秘密之改善Oracle數據庫性能 (01-24) · 在數據字典中直接修改Oracle表列名 (01-23)
· 用Windows腳本宿主自動化Oracle工具 (01-23) · 審計並報告Oracle數據庫中用戶活動 (01-23)
  客戶需求反饋表
* 姓  名:
更多資料  了解方案  認識廠商
* 單位名稱:
* 聯繫電話:
* 電子郵件:
  賽迪推薦  
  手機·資費 ·新品·導購·評測·手機資費·寬帶
手機搜索  諾基亞 N73 MOTO Z6
  IT產品 ·筆記本·臺式機·伺服器·列印·投影
IT產品搜索 
  IT技術 ·開發·網管·安全·數據庫·作業系統
  博客·論壇 ·曾劍秋·項立剛·Java學習·網管