oracle 11g資料庫三大最佳化手段之一的ash生成及詳解

記錄每一次錯誤發表於2018-12-11

 

1 ASH Active SessionHistory

ASH V$SESSION 為基礎,每秒取樣一次,記錄活動會話等待的事件。不活動的會話不會取樣,取樣工作由新引入的後臺程式 MMNL 來完成。

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

ASH buffers 的最小值為 1MB ,最大值不超過 30MB. 記憶體中記錄資料。期望值是記錄一小時的內容,所以說 ASH 記憶體記錄資料始終是有限的

一般線上上實時診斷資料庫效能問題,特別是負載高 w 出來上了 100 後, cpu 100% ,這個時候用 ash 實時出日誌報告,就能很大程度上準確定位問題所在。

2 ASH 的主要要素點

在執行 SQL> @?/rdbms/admin/ashrpt.sql 命令後,會讓有如下引數需要手動填寫:

日誌報告型別

Enter value for report_type: text --  選擇生成的 ASH  報告型別,是 text  還是 html

2 )日誌報告起始時間

Enter value for begin_time: 08/31/16   20:00:00

--  輸入 ASH  開始的時間,時間格式上面的示例有說明,比如我這裡是 2016 8 31 日晚上 20:00:00 開始。

3 )日誌報告結束時間

Enter value for duration: 120( 此處是用分鐘來計算了,是從開始的時間往後 2 個小時 )

--  輸入 ASH  結束時間,預設是 SYSDATE - begin_time ,一般輸入的分析統計的總時間,一般預設是 分鐘 ,拿出 2 個小時的 ash 分析日誌來。

4 )報告檔名

Enter value for report_name: /home/oracle/ ceshi. html 

--  輸入 ASH  報告的名稱,可以指定生成的目錄,預設情況是當前登陸 sqlplus 的目錄。   這裡的擴充套件最好加上,如果不加副檔名,副檔名會變成 lst.  不影響資料,但是會影響閱讀效率。

3 ASH 操作實戰記錄

SYS@sjptdb1>@?/rdbms/admin/ashrpt.sql

 

Current Instance

~~~~~~~~~~~~~~~~

 

   DB Id    DB Name      Inst Num Instance

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

 3581456119 SJPTDB              1 sjptdb1

 

 

Specify the Report Type

~~~~~~~~~~~~~~~~~~~~~~~

Enter 'html' for an HTML report, or 'text' for plain text

Defaults to 'html'

Enter value for report_type: html

 

Type Specified:  html

Instances in this Workload Repository schema

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

   DB Id     Inst Num DB Name      Instance     Host

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

  3581456119        2 SJPTDB       sjptdb2      xf01dbadm02.

                                                hlic.cn

 

* 3581456119        1 SJPTDB       sjptdb1      xf01dbadm01.

                                                hlic.cn

 

 

Defaults to current database

Using database id: 3581456119

Enter instance numbers. Enter 'ALL' for all instances in a

RAC cluster or explicitly specify list of instances (e.g., 1,2,3).

Defaults to current instance.

 

Using instance number(s): 1

 

ASH Samples in this Workload Repository schema

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Oldest ASH sample available:  25-Nov-18 23:00:21   [  13686 mins in the past]

Latest ASH sample available:  05-Dec-18 11:06:27   [      0 mins in the past]

 

 

Specify the timeframe to generate the ASH report

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Enter begin time for report:

 

--    Valid input formats:

--      To specify absolute begin time:

--        [MM/DD[/YY]] HH24:MI[:SS]

--        Examples: 02/23/03 14:30:15

--                  02/23 14:30:15

--                  14:30:15

--                  14:30

--      To specify relative begin time: (start with '-' sign)

--        -[HH24:]MI

--        Examples: -1:15  (SYSDATE - 1 Hr 15 Mins)

--                  -25    (SYSDATE - 25 Mins)

 

Defaults to -15 mins

Enter value for begin_time: 05/12 8:00

Report begin time specified: 05/12 8:00

 

Enter duration in minutes starting from begin time:

Defaults to SYSDATE - begin_time

Press Enter to analyze till current time

Enter value for duration: 7200

Report duration specified:   7200

Using 12-May-18 08:00:00 as report begin time

Using 17-May-18 08:00:00 as report end time

Specify Slot Width (using ashrpti.sql) for 'Activity Over Time' section

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

-- Explanation:

--   In the 'Activity Over Time' section of the ASH report,

--   the analysis period is divided into smaller slots

--   and top wait events are reported in each of those slots.

-- Default:

--   The analysis period will be automatically split upto 10 slots

--   complying to a minimum slot width of

--     1 minute,  if the source is V$ACTIVE_SESSION_HISTORY or

--     5 minutes, if the source is DBA_HIST_ACTIVE_SESS_HISTORY.

 

 

Specify Slot Width in seconds to use in the 'Activity Over Time' section:

Defaults to a value as explained above:

Slot Width specified:

Specify Report Targets (using ashrpti.sql) to generate the ASH report

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

-- Explanation:

--   ASH Report can accept "Report Targets",

--   like a particular SQL statement, or a particular SESSION,

--   to generate the report on. If one or more report targets are

--   specified, then the data used to generate the report will only be

--   the ASH samples that pertain to ALL the specified report targets.

 

-- Default:

--   If none of the report targets are specified,

--   then the target defaults to all activity in the database instance.

Specify SESSION_ID (eg: from V$SESSION.SID) report target:

Defaults to NULL:SESSION report target specified:

 

Specify SQL_ID (eg: from V$SQL.SQL_ID) report target:Defaults to NULL: (% and _ wildcards allowed)

SQL report target specified:

Specify WAIT_CLASS name (eg: from V$EVENT_NAME.WAIT_CLASS) report target:

[Enter 'CPU' to investigate CPU usage]

Defaults to NULL: (% and _ wildcards allowed)

WAIT_CLASS report target specified:

Specify SERVICE_HASH (eg: from V$ACTIVE_SERVICES.NAME_HASH) report target:

Defaults to NULL:

SERVICE report target specified:

........( 此處省略 )

<br /><a href="#top">Back to Top</a><p />

<p />

End of Report

</body></html>

Report written to ceshi.html

 

4 ASH 日誌報告詳解

4.1 ASH 報告

使用 ash 報告,在生成 ash 報告之後,可以重新檢索哪些標識為短暫效能問題的資訊。

 

ash 報告的內容分成了以下幾個部分:

 

4.2 Top Evnets

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

1 Top User Events 頂級使用者事件

這部分資訊顯示了在抽樣會話活動中佔很高百分比的使用者程式等待事件  

 

2 Top Background Events 頂級後臺事件

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

3 Top Event P1/P2/P3 Values 頂級等待事件引數 P1/P2/P3

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

 

4.3 Load Profile

load profile 部分描述了在抽樣的會話活動中的負載分析 . 使用這部分資訊可以識別造成短暫效能問題的服務,客戶或 sql 命令型別 . 負載概要部分包含以下部分資訊 :

 

1 top service/module

這部分資訊顯示了在抽樣會話活動中佔很高百分比的服務和模組資訊

 

2 top client ids

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

 

3 top sql command types

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

 


4 top phases of execution  

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

     

4.4 Top Sql

頂級 sql 部分描述了抽樣會話活動中的頂級 sql 語句,使用這部分資訊可以識別出造成短暫效能問題的高負載 sql 語句

頂級 sql 部分包含以下資訊 :

   

1 top sql with top events

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

 

2 top sql with top row sources

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

 

3 top sql using literals

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

 

4 top parsing module/action

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

 

5 complete list of sql text

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

6 top pl/sql

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

   

7 top java

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

  4.5 top sessions

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

 

1 top sessions

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

 

2 top blocking sessions

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

 

3 top sessions running pqs

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

 

4.6 top objects/files/latches

這部分資訊顯示了通常最消耗資料庫資源的資訊括以下部分 :

 

1 top db objects  

這部分資訊顯示了在抽樣會話活動中佔所有引用物件很高百分比的資料庫物件 ( 比如表和索引 )  

2 top db files  

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

3 top latches

這部分資訊顯示了在抽樣會話活動中佔很高百分比的閂鎖資訊  

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

 

 

4 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/31547066/viewspace-2284833/,如需轉載,請註明出處,否則將追究法律責任。

相關文章