ASH、AWR、ADDM區別聯絡
=========================================================================================================
概念知識梳理
=========================================================================================================
--->>根據時段區間生成ASH報告:
---->>ASH報告資訊:
ASH (Active Session History)
ASH以V$SESSION為基礎,每秒取樣一次,記錄活動會話等待的事件。不活動的會話不會取樣,取樣工作由新引入的後臺程式MMNL來完成。
ASH buffers 的最小值為1MB,最大值不超過30MB.記憶體中記錄資料。期望值是記錄一小時的內容。
生成ASH報告:
SQLPLUS>@?/rdbms/ashrpt.sql
ASH 記憶體記錄資料始終是有限的,為了儲存歷史資料,引入了自動負載資訊庫(AutomaticWorkload Repository ,AWR) 由後臺程式MMON完成。ASH資訊同樣被採集寫出到AWR負載庫中。由於記憶體不是足夠的,所以MMNL程式在ASH寫滿後會將資訊寫出到AWR負載庫中。ASH全部寫出是不可接受的,所以一般只寫入收集的10%的資料量,而且使用direct-pathinsert完成,儘量減少日誌的生成,從而最小化資料庫效能影響。
寫出到AWR負載庫的ASH資訊記錄在AWR的基礎表wrh$active_session_hist中,wrh$active_session_hist是一個分割槽表,會自動進行資料清理。
AWR(Automatic Workload Repository)自動工作負載資訊庫
AWR是 10g中的一個新特性,類似於10g以前的statspack.不過在使用上要比statspack簡單,提供的效能指標要比statspack多很多,能更好的幫助DBA來發現資料庫的效能瓶頸。
AWR 是Oracle安裝好後自動啟動的,不需要特別的設定。收集的統計資訊在SYSAUX表空間SYS模式下,以WRM$_*和WRH$_*的格式命名,預設會保留最近7天收集的統計資訊。每個小時將收集到的資訊寫到資料庫中,這一系列操作是由一個叫MMON的程式來完成的。
---->>根據snapshot敬意生成AWR報告:
---------->>AWR報告部分資訊:
AWR的資料分類:
WRM$表儲存AWR的後設資料(awrinfo.sql指令碼)
WRH$表儲存取樣快照的歷史資料(awrrpt.sql指令碼)
WRI$表儲存同資料庫建議功能相關的資料(ADDM相關資料)
一。生成AWR報告:
SQL>@?/rdbms/admin/awrrpt
根據嚮導來完成AWR報告的生成。需要注意的是,在選擇時間範圍的時候,中間不能有停機(如果顯示的時間中間有空白行,表示有停機情況)。在選擇報告型別的時候一般使用預設的HTML,方便檢視。
二。檢視資料庫的AWR的設定:
SQL> select snap_interval, retention from dba_hist_wr_control;
SNAP_INTERVAL
---------------------------------------------------------------------------
RETENTION
---------------------------------------------------------------------------
+00000 01:00:00.0(每小時收集一次)
+00007 00:00:00.0(保留7天)
三。修改預設設定:
begin
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 20,
retention => 2*24*60);
end;
修改成每20分鐘收集一次統計量,保留最近的2天統計量資訊。
四。手動收集一次資料庫的統計資訊:
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
我們還可以透過DBMS_WORKLOAD_REPOSITORY包完成對基線,預設設定的修改等操作。
ADDM (Automatic Database Diagnostic Monitor AWR)
是Oracle內部的一個顧問系統,能夠自動的完成最資料庫的一些最佳化的建議,給出SQL的最佳化,索引的建立,統計量的收集等建議。
---->>根據AWR區間生成ADDM報告:
---->>ADDM報告概要資訊:
ADDM報告生成:
SQLPLUS>@?/rdbms/addmrpt.sql
Oracle 效能調整最重要的就是對最影響效能的SQL的調整。在一個應用中,能夠影響到資料庫的只有SQL,也只能是SQL.我們不能一味依靠增強硬體,修改系統、資料庫引數來提高資料庫的效能。更多的應該關注那些最影響效能的SQL語句。ASH報告、AWR報告、ADDM報告都能夠找出最影響效能的SQL的工具。在分析ASH報告、AWR報告的時候,最重要的就是關注SQL Statistics,SQL Statistics中最應該關注的是SQL ordered byGets和SQL ordered byReads兩個指標。大量的Gets(邏輯讀)會佔用大量的CPU時間。大量的Reads(物理讀)會引起IO的瓶頸出現。一般情況下,大量的Gets會伴隨著大量的Reads出現。當然,我們可以透過增大SGA的大小來減少Reads的量。透過這兩個指標找到了最影響效能的SQL,這是首要的,也是必要的。下一步就可以透過建立索引,調整SQL來提高SQL單獨執行時的效能。減少SQL執行時出現的高Gets,Reads.當然整體的效能影響還和 excutions有關,如果這條SQL執行的次數過多,累加起來量還是很大的。那麼就可以考慮透過在應用上快取等手段來減少SQL執行的次數。另外還有一個需要注意的問題就是在開發過程中SQL一定要使用繫結變數,來減少硬解析(大量的硬解析也會消耗大量的CPU時間,佔用大量的Latch)。在開發過程中有個原則就是:小事務。操作完成及時的提交。
我們使用這麼多種方式、報告只有一個唯一的目的:找出最影響系統效能的SQL語句。找到SQL下一步就是對它進行調整了。
我們在監控資料庫時,如果是當前正在發生的問題,我們可以透過v$session+v$sqlarea來找出效能最差的SQL語句。如果在一個小時以內發生的我們可以透過生成ASH報告來找出SQL.如果是1小時以上或幾天我們可以透過AWR報告來找出幾小時,幾天以來最影響系統的SQL語句。ADDM報告基於AWR庫,預設可以儲存30天的ADDM報告。
我們也可以直接查詢試圖:
v$session (當前正在發生)
v$session_wait (當前正在發生)
v$session_wait_history (會話最近的10次等待事件)
v$active_session_history (記憶體中的ASH採集資訊,理論為1小時)
wrh$_active_session_history (寫入AWR庫中的ASH資訊,理論為1小時以上)
dba_hist_active_sess_history (根據wrh$_active_session_history生成的檢視)
=========================================================================================================
實 用 腳 本
=========================================================================================================
@?rdbms/admin/awrrpt.sql是以前statspack的擴充套件,收集資訊更詳細,檢視長期的資料庫情況。
@?rdbms/admin/ashrpt.sql檢視當前的資料庫情況,因為ash是每秒從v$session進行進行取樣,awr收集的資料要比ash多得多。
一般收集資料庫資訊的話要結合awr和ash。
@?rdbms/admin/addmrpt .sql相當於是駐留在oracle裡的一位專家,是一個自我診斷引擎。產生symptom,problem,infomation,提供解決問題的建議,並自動修復一些具體的故障。
@?rdbms/admin/awrinfo.sql顯示的都是awr的相關資訊,包括快照資訊、sysaux空間使用、awr元件、ash等資訊。
=========================================================================================================
簡 單 總 結
=========================================================================================================
awr與ash的最主要的區別在於:awr是平面的,全面的,ash是立體的,更側重於session的event跟蹤,
由於業務量大的資料庫的event wait是瞬息萬變,awr很可能會監控不到,為了彌補這個不足,ash才可以對session的event進行跟蹤。
ash與addm的區別在於:addm偶重於基於對當據庫當前狀態的分析,對存在的問題提供指導性的意見,可以說ash,addm是awr的補充,
awr全面地收集資料庫的狀態,但ash/addm是側重要對收集的資料進行分析,並提供一些有益的建議。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1144554/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- statspack、awr、addm,ash影片分享
- AWR、ASH、ADDM和顧問程式
- statspack、awr、addm,ash視訊分享
- oracle效能調憂工具AWR,ASH,ADDMOracle
- Oracle效能調整的三把利劍--ASH,AWR,ADDMOracle
- oracle awr ashOracle
- ASH可以生成指定的session或sql_id的報告,ASH和AWR的區別SessionSQL
- ASH, AWR , 等待事件事件
- working with ASH and AWR
- define與typedef區別與聯絡
- Apache與Tomcat 區別聯絡ApacheTomcat
- 轉:IDOCBAPIRFC區別和聯絡API
- OO ADT 模組區別聯絡
- 學用ORACLE AWR和ASH特性(1)-ASH和AWR的故事Oracle
- cookie與session的區別與聯絡CookieSession
- Session與Cookie的區別與聯絡SessionCookie
- http、socket、tcp的區別和聯絡?HTTPTCP
- SCADA和PLC的區別聯絡
- 同步與阻塞的區別與聯絡
- Session和Cookie的聯絡與區別SessionCookie
- has、ohasd、crs、cluster區別和聯絡
- JDK,JRE,JVM區別與聯絡JDKJVM
- hive與hbase的聯絡與區別Hive
- onchange與onpropertychange的聯絡與區別!
- servlet/filter/listener/interceptor區別與聯絡ServletFilter
- BS與CS的聯絡與區別
- CGI與Servlet的區別和聯絡Servlet
- Session和Cookie的區別與聯絡SessionCookie
- tcp/ip和http的區別和聯絡TCPHTTP
- JRE與JDK的區別與聯絡JDK
- Jdk、Jre Jvm的區別和聯絡JDKJVM
- Linux和Ubuntu的區別與聯絡LinuxUbuntu
- orcle pfile和spfile的區別和聯絡
- NET|Ref 和out 的區別和聯絡
- [轉]Apache與Tomcat 區別及聯絡ApacheTomcat
- WebService REST RPC MQ區別與聯絡WebRESTRPCMQ
- connection session process的聯絡與區別Session
- COM/DCOM的區別與聯絡 (轉)