標籤:os java 使用 io 檔案 for ar 資料 問題
活動會話曆史報告
活動會話曆史
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資料只從活動會話中進持抽樣說明資料庫的
負載增加了.通常來說當活動會話抽樣的數理和與這些會話相關的等待事件增加時那麼這個時段可能會造成短暫效能問題.
oracle ash效能報告的使用方法