日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle ash介绍,Oracle ---- 性能调查之ASH(一)

發布時間:2025/3/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle ash介绍,Oracle ---- 性能调查之ASH(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在ORACLE性能問題調查時,有價值的診斷情報有很多:STATSPACK,AWR,ASH,SYSTEMSTATE DUMP等等。每一種都在特定的場景起到重要的作用。其中最多的一個場景就是問題發生后采用了緊急對應,暫時回避了問題,但是問題的原因需要詳細的調查。這時候,ASH就是一個非常有效的情報。

為什么呢?

因為在這種情況下,無論是客戶還是Support工程師,最想知道的就是到底發生了啥問題。

ASH就是為了滿足這個需要而產生的,它可以提供兩種時間間隔(1秒和10秒)的Active Session的幾乎所有相關的信息。

下面先說一下ASH的內部設計吧。

參照上面的圖,我們來整理一下ASH情報的來源和處理過程。1. ?后臺進程MMNL(MMON Lite 即輕量化的MMON進程),每1秒鐘1次(采集間隔由隱藏參數“_ash_sampling_interval”控制)把V$SESSION 和V$SESSION_WAIT的數據里的ACTIVE SESSION(非IDLE待機SESSION)轉存到V$ACTIVE_SESSION_HISTORY里。

2. ?V$ACTIVE_SESSION_HISTORY的數據存儲在SGA中的一個循環使用的Buffer里,大小用隱藏參數“_ash_size”控制。

3. ?Buffer里的記錄按照比例( 由隱藏參數“_ash_disk_filter_ratio”控制)被寫到磁盤上,可以通過DBA_HIST_ACTIVE_SESS_HISTORY查詢。

4. ?存到磁盤上的數據遵守AWR的保存Policy。

關于ASH機能一些隱藏參數,可以參照以下:Parameter Value

-------------------------------------------------- ----------

Description

----------------------------------------------------------------------------------------------------

_ash_sampling_interval 1000

Time interval between two successive Active Session samples in millisecs

_ash_size 1048618

To set the size of the in-memory Active Session History buffers

_ash_enable TRUE

To enable or disable Active Session sampling and flushing

_ash_disk_write_enable TRUE

To enable or disable Active Session History flushing

_ash_disk_filter_ratio 10

Ratio of the number of in-memory samples to the number of samples actually written to disk

_ash_eflush_trigger 66

The percentage above which if the in-memory ASH is full the emergency flusher will be triggered

_ash_sample_all FALSE

To enable or disable sampling every connected session including ones waiting for idle waits

_ash_dummy_test_param 0

Oracle internal dummy ASH parameter used ONLY for testing!

_ash_min_mmnl_dump 90

Minimum Time interval passed to consider MMNL Dump

_ash_compression_enable TRUE

To enable or disable string compression in ASH

_ash_progressive_flush_interval 300

ASH Progressive Flush interval in secs

那么如何利用ASH情報分析性能問題呢?

這個問題沒有固定答案,因為ASH是一種原始數據,只負責記錄SESSION在采樣時的狀態。所以ASH并不直接反映問題,只提供分析問題的材料。

也就是說,DBA或Support工程師必須先對問題分析,想定一個或多個問題發生的原因和劇本。然后在利用ASH數據找到支持自己設想的證據。

今天舉一個簡單的例子。

客戶報告3個APP Servers和兩個節點的RAC環境中,有一個APP Server的處理比另外兩個APP Servers的處理慢,但是發往3個APP Servers的處理本身沒有任何區別。

因為客戶是在APPLICATION 的畫面上確認到的這個問題,所以首先調查了APP Server端,但是沒有找到原因,于是APP Server的Support工程師懷疑DB端的問題,就向我們DB的Support發出了調查要求。

基于前面問題的描述,最直觀的反應就是這個問題和DB沒有關系,原因有二:第一是3個APP Servers發出的處理(SQL文)本身沒有區別;第二是DB端處理SQL文時只關注SQL的請求內容,不會關注是哪一臺APP Server發來的請求。

為了找到證據來證明上面的觀點,我首先假設這個問題慢的地方不在DB,而是APP Server本身或網絡延遲,而在DB端實際沒有任何延遲,3臺APP Servers的處理速度是一樣的。

然后我用下面的SQL文對延遲時間段內3臺APP Servers發出的所有SQL文進行了抽取和比較,結果如下:SQL> select SQL_ID,SQL_PLAN_HASH_VALUE,SQL_EXEC_ID,count(*)

from m_dba_hist_active_sess_history

where PROGRAM='JDBC Thin Client'

and MACHINE='APP Server Name'

group by SQL_ID,SQL_PLAN_HASH_VALUE,SQL_EXEC_ID

order by count(*) desc;

◆1號機(Slow Node)

SQL_ID SQL_PLAN_HASH_VALUE SQL_EXEC_ID COUNT(*)

-------------------- ------------------- ----------- ----------

aaaaaaaaaaaa 2617621828 16777258 115

aaaaaaaaaaaa 2617621828 16777220 69

bbbbbbbbbbbb 1192575627 33554439 34

cccccccccccc 1878459779 16777216 13

dddddddddddd 2703624694 16777216 7

dddddddddddd 2703624694 33554432 6

eeeeeeeeeeee 876643066 33554438 4

eeeeeeeeeeee 876643066 33554439 4

eeeeeeeeeeee 876643066 16777238 4

eeeeeeeeeeee 876643066 16777237 4

eeeeeeeeeeee 876643066 16777240 4

◆2號機

SQL_ID SQL_PLAN_HASH_VALUE SQL_EXEC_ID COUNT(*)

-------------------- ------------------- ----------- ----------

aaaaaaaaaaaa 2617621828 16777223 150

aaaaaaaaaaaa 2617621828 16777221 150

aaaaaaaaaaaa 2617621828 16777224 30

aaaaaaaaaaaa 2617621828 16777222 30

aaaaaaaaaaaa 2617621828 16777225 27

aaaaaaaaaaaa 2617621828 16777219 16

aaaaaaaaaaaa 2617621828 16777218 16

bbbbbbbbbbbb 3425641204 16777222 32

bbbbbbbbbbbb 3425641204 16777221 31

bbbbbbbbbbbb 3425641204 16777223 28

bbbbbbbbbbbb 3425641204 16777220 16

bbbbbbbbbbbb 3425641204 16777219 15

dddddddddddd 2703624694 33554437 7

dddddddddddd 2703624694 33554436 6

eeeeeeeeeeee 876643066 33554450 4

eeeeeeeeeeee 876643066 16777219 4

eeeeeeeeeeee 876643066 16777220 4

eeeeeeeeeeee 876643066 33554440 4

eeeeeeeeeeee 876643066 16777221 4

eeeeeeeeeeee 876643066 33554452 4

eeeeeeeeeeee 876643066 16777222 3

eeeeeeeeeeee 876643066 33554441 3

eeeeeeeeeeee 876643066 16777241 3

eeeeeeeeeeee 876643066 16777224 3

eeeeeeeeeeee 876643066 33554453 3

◆3號機

SQL_ID SQL_PLAN_HASH_VALUE SQL_EXEC_ID COUNT(*)

-------------------- ------------------- ----------- ----------

aaaaaaaaaaaa 2617621828 16777217 7

bbbbbbbbbbbb 3425641204 16777218 8

eeeeeeeeeeee 876643066 16777216 6

eeeeeeeeeeee 876643066 33554449 4

eeeeeeeeeeee 876643066 33554446 4

eeeeeeeeeeee 876643066 16777239 4

eeeeeeeeeeee 876643066 16777244 4

eeeeeeeeeeee 876643066 16777223 4

eeeeeeeeeeee 876643066 16777243 4

eeeeeeeeeeee 876643066 33554443 4

eeeeeeeeeeee 876643066 16777217 4

eeeeeeeeeeee 876643066 16777245 3

eeeeeeeeeeee 876643066 33554445 3

eeeeeeeeeeee 876643066 33554444 3

eeeeeeeeeeee 876643066 16777218 3

eeeeeeeeeeee 876643066 33554442 3

eeeeeeeeeeee 876643066 33554448 3

eeeeeeeeeeee 876643066 33554451 3

eeeeeeeeeeee 876643066 33554447 3

eeeeeeeeeeee 876643066 16777242 3

通過上面的比較,我們會發現相同的SQL文在客戶報告處理慢的1號機和不慢的2號機3號機相比,采樣時并沒有明顯的區別。因為一個采樣基本可以看作SQL文執行了10秒鐘。

這就證明了我們對DB端沒有區別,問題點也不在DB端的設想,剩下的就得讓APP Server和網絡的Support去調查了。

今天只是用一個小例子來簡單說明一下ASH的用法,以后我會分享更多的例子,歡迎關注。

2021/03/17 @ Dalian

總結

以上是生活随笔為你收集整理的oracle ash介绍,Oracle ---- 性能调查之ASH(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。