oracle 11g資料庫三大最佳化手段之一的ash生成及詳解
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 11G 效能診斷最佳化之ASH實戰分析詳解Oracle
- Oracle 11g ASH報告的生成方法Oracle
- Oracle10g AWR及ASH詳解(final)Oracle
- Oracle資料庫啟動過程及狀態詳解Oracle資料庫
- 學用ORACLE AWR和ASH特性(3)-生成指定資料庫例項的統計報表Oracle資料庫
- [轉]Oracle資料庫ASH和AWR的簡單介紹Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- ORACLE 資料庫審計詳解Oracle資料庫
- oracle 資料庫ASM功能詳解Oracle資料庫ASM
- Oracle資料庫及應用程式最佳化(轉)Oracle資料庫
- 詳解ORACLE資料庫的分割槽表Oracle資料庫
- 【Oracle-資料庫概念】-Oracle checkpoint詳解Oracle資料庫
- 學用ORACLE AWR和ASH特性(8)-生成ASH報表Oracle
- 解DBA之惑:資料庫承載能力評估及優化手段資料庫優化
- Oracle 11g資料庫Oracle資料庫
- Oracle資料庫AWR的使用例項詳解Oracle資料庫
- 資料庫訪問最佳化法則詳解之返回更少的資料資料庫
- 用Powerdesigner的PDM生成資料庫及逆向生成資料庫
- 轉載詳細的Oracle ASH/AWR介紹及報告分析Oracle
- Oracle資料庫遷移之一:RMANOracle資料庫
- Oracle 11g 手工跑ASH報告Oracle
- Oracle資料庫提高命中率及相關最佳化Oracle資料庫
- Oracle 11g系列:資料庫Oracle資料庫
- ORACLE資料庫閃回步驟詳解Oracle資料庫
- oracle資料庫 exp/imp命令詳解(轉)Oracle資料庫
- 生成Oracle 資料庫的ER圖的工具Oracle資料庫
- 紹Oracle資料庫的最佳化之資料庫磁碟I/OOracle資料庫
- Oracle資料庫字符集分析之一Oracle資料庫
- 資料庫訪問最佳化法則詳解之利用更多的資源資料庫
- 最佳化Oracle停機時間及資料庫恢復(轉)Oracle資料庫
- oracle資料庫最佳化基礎Oracle資料庫
- 手工建立ORACLE 11g 資料庫Oracle資料庫
- Oracle 11g 閃回資料庫Oracle資料庫
- Oracle資料庫備份還原詳解XKUSOracle資料庫
- 分散式資料庫排序及最佳化分散式資料庫排序
- 【效能最佳化】ORACLE資料庫效能最佳化概述Oracle資料庫
- 靜默建立oracle資料庫及克隆資料庫Oracle資料庫
- Oracle資料庫不同損壞級別的恢復詳解Oracle資料庫