乙個執行計畫異常變更的案例 外傳之ASH

2021-09-22 17:09:22 字數 2407 閱讀 4166

之前的幾篇文章:

《乙個執行計畫異常變更的案例 - 前傳》

《乙個執行計畫異常變更的案例 - 外傳之繫結變數窺探》

《乙個執行計畫異常變更的案例 - 外傳之檢視繫結變數值的幾種方法》

《乙個執行計畫異常變更的案例 - 外傳之rolling invalidation》

《乙個執行計畫異常變更的案例 - 外傳之聚簇因子(clustering factor)》

《乙個執行計畫異常變更的案例 - 外傳之查詢執行計畫的幾種方法》

《乙個執行計畫異常變更的案例 - 外傳之awr》

上篇文章介紹了awr,他的預設採集週期是一小時,這一小時內對系統負載或效能產生持續性影響的會話、sql、等待事件等的資訊,awr可以提供乙個完整的映象說明,但有時往往產生資源高消耗的就是乙個或某幾個會話,對於awr,除非手工收集awr,否則會有一小時的延遲,另外,如果我現在就需要檢視系統中的負載,或查詢效能最差的一條sql,此時就需要另一種工具的支援,ash,即active session history,顧名思義,他是基於session級別的統計資訊收集工具,比awr粒度更細。

ash的資訊以vse

ssio

n為基礎

,每秒採

集一次,

較新的信

息儲存在

vactive_session_history檢視,歷史資料儲存在dba_hist_active_sess_history檢視,只記錄活動會話等待的事件,不活動的會話不取樣,取樣工作由後台程序mmnl完成(awr資訊採集由mmon程序完成)。

11g下預設ash儲存空間是2mb,

ash空間寫滿後,會由mmnl程序寫入awr負載中,而且也不是所有ash資訊全部寫入,一般只寫入10%的資料,記憶體中的資訊可以使用vac

tive

sess

ionh

isto

ry查詢

,已寫入

awr的

ash信

息可以使

用wrh

_active_session_history/dba_hist_active_sess_history檢視查詢,可以說ash是awr的子集,但awr中的資訊不僅只有ash,還會收集其他一些統計資訊。

如下一些和ash相關的檢視,

實驗:

1.建立ash報告,

首先選擇報告格式,html或文字檔案。

2.若是rac,可以選擇具體例項的序號,

3.選擇採集開始時間,預設是15分鐘之前,

選擇持續時間,預設是使用sysdate-begin_time,

4.提示資訊,

5.輸入生成的報告名稱,預設是「例項序號_mmdd_hh24mm.html」,

6.生成ash報告,

7.開啟ash報告,

可以看出和awr報告相比,ash少了一些系統負載資訊,更多還是

top sql、top events這些資訊。

總結:

相比awr預設跨度一小時的間隔,ash基於v$session提供更多session級別的統計資訊,每秒會採集一次,其儲存於sga分配的空間,寫滿會寫入awr中,雖然少一些awr中包含的系統負載資訊,但對於一些查詢當前效能最差的sql、session負載等的場景,可能比較適合,當然使用一些資料字典檢視sql可以做相同的工作,畢竟這些報告後台就是執行相應的指令碼、檢視sql得出的,這方面羅大師、建榮等同仁有類似的經驗分享,可以參考。

儲存過程實現資料庫重構 變更的乙個案例

當前流行的演進式的軟體開發模式,使資料庫的重構和變更成為軟體構建過程中的平常事情,當然資料庫的重構和變更涉及到許多設計和專案管理上的東西,我這裡只是給出乙個我遇到的關於資料庫變更的案例。需求過程是這樣的 在資料庫設計已經大體完成,使用者突然提出要加強系統的資料跟蹤的能力,於是設計者要求在現在所有的資...

乙個VUE的小案例

商品列表 router link router link to newslist 新聞列表 router link br router view router view div body script 1.定義好元件 const newslistcomponent vue.extend const ...

oracle怎麼實現每天定時執行乙個計畫任務

乙個簡單例子 建立測試表 sql create table a a date 表已建立。建立乙個自定義過程 sql create or replace procedure test as 2 begin 3 insert into a values sysdate 4 end 5 過程已建立。建立j...