oracle ash效能報告的使用方法

kingsql發表於2014-09-22
活動會話歷史報告
活動會話歷史
v$active_session_history檢視提供了在例項級別抽取會話活動資訊.活動會話每分鐘會被抽樣一次且被儲存在sga中的迴圈緩衝區中.任何被連線到資料庫且正等待一個不屬於空閒等待事件的會話會被考慮是一個活動的會話.每個會話抽樣都是一組行資料且透過v$active_session_history檢視來返回每個被抽樣活動會話的行資料,返回最新被抽樣會話的第一行資料.因為活動會話抽樣是儲存在sga中的迴圈緩衝區中,系統活動越大的,活動時間越少會話的可以被儲存在迴圈緩衝區中.這意味著在這期間被抽樣的每個會話會出現在v$檢視中或者會話活動的時間會在v$檢視中被顯示,這完全依賴於資料庫活動情況.


作為awr快照的一部分,v$active_session_history檢視的內容也會被重新整理到磁碟.因為當有繁忙的系統活動時v$檢視的內容會變得非常大,只有會一部分會話被抽樣並寫到磁碟.透過只捕獲活動的會話,那麼只會生成正在被執行的會話的相關的一組資料而不是系統中所有會話的資料.使用ash能讓你對v$active_session_history檢視中的當前資料和dba_hist_active_sess_history檢視中的歷史資料進行檢查和效能分析,通常可能避免需要重放工作量來收集額外的效能跟蹤資訊.ash包含了被捕獲的每一個sql語句的執行計劃.可以使用這個資訊來識別哪部分sql執行消耗了大部分的sql執行時間.ash報告展現了以下各種資訊:
sql語句的sql識別符號
sql執行計劃識別符號和用於執行sql語句的sql執行計劃的雜湊值
sql執行計劃資訊
物件數,檔案數和塊數
等待事件識別符號和引數
會話識別符號和會話序列號
模組和操作名
服務雜湊識別符號
使用者組識別符號




使用活動會話歷史報告來執行以下效能分析:
短暫的效能問題通常只會持續幾分鐘.
透過各種維度或者象時間,會話,模組,操作或sql_id的組合來進行有範圍或針對性的效能分析


短暫的效能問題是短暫的不在出現在addm分析中.addm試圖報告指出在分析週期內最對DB時間最有影響的效能問題.如果一個特定的問題持續非常短的時間那麼它可的嚴重性可能會被平均化或者由於其它的效能問題使其影響最小化.然而這個問題可能在addm中不會出現,一個效能問題是否會被addm捕獲依賴於這個問題的持續時間與生成awr快照的時間間隔.


如果一個效能問題在兩個awr快照生成的時間間隔內持續了很長時間那麼這個問題會被addm捕獲.例如如果awr快照時間被設定為一個小時,一個效能問題持續了30分鐘那麼這個問題不會被認為是一個短暫的效能問題因為它在快照時間間隔內持續很長時間它會被addm捕獲.然而如果一個效能問題僅僅持續2分鐘可能會被認為是一個短暫的效能問題因為在快照時間間隔內它只持續了很短的時間所以這個問題不會出現在addm報告中.例如如果你被告知系統在上午10:00到上午10:10之間很慢,但addm分析的時間間隔是從上午10:00到上午11:00.那麼在addm報告中不會顯示這個問題.


ASH報告分成多個部分.HTML報告包括能快速導航到不同部分的連結.




生成一個ash報告
ashrpt.sql指令碼用來生成一個html或text格式的報告來顯示特定持續期間的ash資訊.為了生成一個ash報告執行以下操作:
1.在sql提示符處輸入:
@$ORACLE_HOME/rdbms/admin/ashrpt.sql
2.指定你想生成的報告格式html或text:
Enter value for report_type: text
在這個例子中選擇生成text格式的ash報告
3.指定在ash報告開始時間:
Enter value for begin_time: -10
在這個例子中開始時間是當前時間之前的10分鐘
4.輸入這個報告持續的時間如果你想捕獲從指定的開始時間到當前時間的之間的ash資訊:
Enter value for duration:
在這個例子中預設是持續到當前的系統時間減去指定的開始時間的結果就是持續的時間.
5.輸入報告名或使用預設的報告名:
Enter value for report_name: 
Using the report name ashrpt_1_0310_0131.txt
在這個例子中使用預設的ash名ashrpt_1_0310_0131被生成.這個報告會從當前系統時間之前的10分鐘開始收集ash資訊一直持續
到當前時間結束.


對一個指定的資料庫例項生成ash報告
ashrpti.sql指令碼用來對一個指定的資料庫和例項生成一個html或text格式的報告來顯示特定持續期間的ash資訊.這個報告在設定收集ash資訊時間之前允許你指定資料庫和例項,為了生成一個ash報告執行以下操作:
1.在sql提示符處輸入:
@$ORACLE_HOME/rdbms/admin/ashrpti.sql
2.指定你想生成的報告格式html或text:
Enter value for report_type: html
在這個例子中選擇生成html格式的ash報告
3.列出了可用的資料庫ID和例項號:
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   DB Id    Inst Num DB Name      Instance     Host
----------- -------- ------------ ------------ ------------
 3349173529        1 cs           cs            cs1
 3349173529        1 test1        test1         test1
輸入資料庫識別符號(dbid)和例項號(inst_num):
Enter value for dbid: 3349173529
Using 3349173529 for database id
Enter value for inst_num: 1


4.這一步僅適用於對一個活動的data guard物理備庫例項收集ash報告,如果不是這種情況,可以跳過這一步.為了對一個物理備庫生成一個ash報告,這個備庫例項必需是以只讀方式開啟.這個ash報告包含了主資料庫儲存在磁碟中的ash資訊和備資料庫記憶體中的ash資訊.指定對於主資料庫或備資料庫是否使用資料抽樣來生成報告:
You are running ASH report on a Standby database.
To generate the report over data sampled on the Primary database, enter 'P'.
Defaults to 'S' - data sampled in the Standby database.
Enter value for stdbyflag:
Using Primary (P) or Standby (S): S
在這個例子中選擇了預設值S備庫


5.指定在ash報告開始時間:
Enter value for begin_time: -10
在這個例子中開始時間是當前時間之前的10分鐘
6.輸入這個報告持續的時間如果你想捕獲從指定的開始時間到當前時間的之間的ash資訊:
Enter value for duration:
在這個例子中預設是持續到當前的系統時間減去指定的開始時間的結果就是持續的時間.
7.以秒為單位指定slot_width
Enter value for slot_width: 
在這個例子中使用預設值
8.根據後續提示的說明解釋輸入報告以下目標資訊的值:
target_session_id
target_sql_id
target_wait_class
target_service_hash
target_module_name
target_action_name
target_client_id
target_plsql_entry


9.輸入報告名或使用預設的報告名:
Enter value for report_name: 
Using the report name ashrpt_1_0310_0131.txt
在這個例子中使用預設的ash名ashrpt_1_0310_0131被生成.這個報告會對資料庫ID為3349173529的資料庫例項從當前系統時間之前的10分鐘開始收集ash資訊一直持續到當前時間結束.




對oracle rac生成ash報告
ashrpti.sql指令碼用來對oracle rac環境中的指定的資料庫和例項生成一個html或text格式的報告來顯示特定持續期間的ash資訊只有被寫入磁碟的ash資料才會被用來生成ash報告.這個報告只會對在dba_hist_active_sess_history表中在過去10分鐘之內找到的ash進行抽樣.為了在oracle rac環境中生成ash報告執行以下操作:
1.在sql提示符處輸入:
@$ORACLE_HOME/rdbms/admin/ashrpti.sql
2.指定你想生成的報告格式html或text:
Enter value for report_type: html
在這個例子中選擇生成html格式的ash報告
3.列出了可用的資料庫ID和例項號:
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   DB Id    Inst Num DB Name      Instance     Host
----------- -------- ------------ ------------ ------------
 3349173529        1 cs           cs           cs1
 3349173529        1 test1        test1        test1
 3349173529        2 test2        test2        test2
 3349173529        3 test3        test3        test3
 3349173529        4 test4        test4        test4
輸入資料庫識別符號(dbid)和例項號(inst_num):
Enter value for dbid: 3349173529
Using database id: 3349173529
Enter instance numbers. Enter 'ALL' for all instances in an Oracle
RAC cluster or explicitly specify list of instances (e.g., 1,2,3).
Defaults to current instance.
Enter value for inst_num: ALL
Using instance number(s): ALL


4.指定在ash報告開始時間:
Enter value for begin_time: -1:10
在這個例子中開始時間是當前時間之前的1小時10分鐘
5.輸入這個報告持續的時間如果你想捕獲從指定的開始時間到當前時間的之間的ash資訊:
Enter value for duration: 10
在這個例子中持續的時間是10分鐘.
6.以秒為單位指定slot_width
Enter value for slot_width: 
在這個例子中使用預設值
7.根據後續提示的說明解釋輸入報告以下目標資訊的值:
target_session_id
target_sql_id
target_wait_class
target_service_hash
target_module_name
target_action_name
target_client_id
target_plsql_entry


8.輸入報告名或使用預設的報告名:
Enter value for report_name: 
Using the report name ashrpt_1_0310_0131.txt
在這個例子中使用預設的ash名ashrpt_1_0310_0131被生成.這個報告會對資料庫ID為3349173529的資料庫的所有例項從當前系統時間之前的1小時10分鐘開始收集ash資訊一直持續到當前時間之前的1小時為止結束.




使用ash報告
在生成ash報告之後,可以重新檢索哪些標識為短暫效能問題的資訊.ash報告的內容分成了以下幾個部分:
top events
load profile
top sql
top pl/sql
top java
top sessions
to objects/files/latches
activity over time




top evnets
頂級等待事件部分描述了被抽樣會話活動中由使用者,後臺等產生的頂級等待事件,使用這些資訊可以識別是哪些等待事件造成了短暫的效能問題.頂級等待事件包含以下部分:
頂級使用者事件
這部分資訊顯示了在抽樣會話活動中佔很高百分比的使用者程式等待事件.


頂級後以事件
這部分資訊顯示了在抽樣會話活動中佔很高百分比的後臺程式等待事件.


頂級等待事件引數P1/P2/P3
這部分資訊顯示了在抽樣會話活動中佔很高百分比的等待事件的引數值它透過總的等待時間(%Event)百分比進行排序後被顯示.對於每一個等待事件p1,p2,p3的值與等待事件引數parameter 1,parameter 2,parameter 3這三個列相關聯.


load profile
load profile部分描述了在抽樣的會話活動中的負載分析.使用這部分資訊可以識別造成短暫效能問題的服務,客戶或sql命令型別.負載概要部分包含以下部分資訊:
top service/module
這部分資訊顯示了在抽樣會話活動中佔很高百分比的服務和模組資訊


top client ids
這部分資訊顯示了在抽樣會話活動中佔很高百分比的客戶端的id資訊它是資料庫會話中應用程式的特定識別符號


top sql command types
這部分資訊顯示了在抽樣會話活動中佔很高百分比的sql命令型別比如select或update


top phases of execution
這部分資訊顯示了在抽樣會話活動中佔很高百分比的執行步驟比如sql,pl/sql和java的編譯和執行操作.


top sql
頂級sql部分描述了抽樣會話活動中的頂級sql語句,使用這部分資訊可以識別出造成短暫效能問題的高負載sql語句
頂級sql部分包含以下資訊:
top sql with top events
top sql with top row sources
top sql using literals
top parsing module/action
complete list of sql text


top sql with top events
這部分資訊顯示了在抽樣會話活動中佔總的等待事件很高百分比的sql語句.


top sql with top row sources
這部分資訊顯示了在抽樣會話活動中佔很高百分比的sql語句和它們的詳細執行計劃資訊.透過這部分資訊可以識別出哪部分的sql執行消耗了大量的sql執行時間


top sql using literals
這部分資訊顯示了在抽樣會話活動中佔很高百分比的使用literal值的sql語句.可以重新檢查這部分sql語句看是否能使用繫結變數來代替literal值.


top parsing module/action
這部分資訊顯示了在抽樣會話活動中當執行解析sql語句時佔很高百分比的模組和操作


complete list of sql text
這部分資訊顯示了頂級sql語句的完整的文字內容


top pl/sql
這部分資訊顯示了在抽樣會話活動中佔很高百分比的pl/sql過程.


top java
這部分資訊顯示了在抽樣會話活動中佔很高百分比的java程式


top sessions
這部分資訊描述了會話正在等待的一個特定等待事件.使用這部分資訊來識別在抽樣會話活動中佔很高百分比的會話它們可能是造成短暫效能問題的原因.top sessions部分包含以下資訊:


top sessions
這部分資訊顯示了在抽樣會話活動中佔很高百分比的等待會話


top blocking sessions
這部分資訊顯示了在抽樣會話活動中佔很高百分比的阻塞會話


top sessions running pqs
這部分資訊顯示了哪些在抽樣會話活動中佔很高百分比的正處於等待的並行查詢


top objects/files/latches
這部分資訊顯示了通常最消耗資料庫資源的資訊括以下部分:
top db objects
這部分資訊顯示了在抽樣會話活動中佔所有引用物件很高百分比的資料庫物件(比如表和索引)


top db files
這部分資訊顯示了在抽樣會話活動中佔訪問量很高百分比的資料庫檔案


top latches
這部分資訊顯示了在抽樣會話活動中佔很高百分比的閂鎖資訊
閂鎖是一種簡單低階別序列化機制用來保護sga中的共享資料結構.比如閂鎖保護當前訪問資料庫和緩衝區快取中資料塊結構的使用者列表.當維護或查詢這些結構時伺服器或後臺程式請求持有閂鎖的時間是非常短暫的.閂鎖的實現依賴於作業系統特別是一個程式等待獲取一個閂鎖多長時間.


activity over time
這一部分是ash報告資訊最豐富的一部分.這部分資訊對於長時間週期的ash報告來說因為在分析期間它提供了關於活動和工作負載概要深層次的詳細資訊.activity over time會被分成10個時段.每個時段的大小基於分析所持續的時間.第一個和最後一個時段是奇怪.所有內部時段是相等的大小它們可以相互比較.例如,如果分析時間持續10分鐘那麼所有的時段將會是每個一分鐘.然後如果分析時間持續9分30秒,那麼外部的時段可能是每個15秒內部的時段可能每個1分鐘


特定時段中每個時段包含的資訊如下:
列                       描述
slot time(持續時間)      時段的持續時間
solt count               在時段中抽樣會話的數量
event                    在時段中頂級的三個等待事件
event count              ash抽樣等待的等待事件的數量
%event                   ash抽樣等待的等待事件在整個分析期間所佔的百分比


當比較內部時段時,透過識別異常的event count和slot count列執行一個傾斜分析.event count列的異常指示了在抽樣會話中等待的等待事件數量增加了.slot count列的異常指示活動的會自豪感增加了,因為ash資料只從活動會話中進持抽樣說明資料庫的
負載增加了.通常來說當活動會話抽樣的數理和與這些會話相關的等待事件增加時那麼這個時段可能會造成短暫效能問題.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1276828/,如需轉載,請註明出處,否則將追究法律責任。

相關文章