您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么手工生成ASH報告,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
我們之前探討過AWR報告的手工方法(http://space.itpub.net/17203031/viewspace-700471),借助AWR報告的定時snapshot功能,我們可以有選擇性的選取時間段系統數據進行分析,最后獲取綜合診斷情況。除了AWR報告,Oracle10g版本中還推出了ASH和ADDM兩個工具,用于進行系統細粒度分析和自動化專家優化方案。其中,ASH(Active Session History)是一種比AWR更加細粒度分析系統會話、發現前端應用梗塞之處的工具。
對于Oracle數據庫而言,大部分的請求都是以會話session的方式出現。一般情況下,單一會話對系統性能的影響是很小的,特別是OLTP系統。如果由于會話的原因引起系統性能,其中重要表現大都是前端應用無響應、無有效連接,同時系統表現出會話執行SQL或者等待事件的信息。同時,特定的Server Process存在高消耗的情況。
在會話引起性能問題或者高消耗發生的時候,我們可以通過v$session、v$session_wait等視圖定位到是哪個會話的那個SQL語句引發的問題,及時進行處理。但是實際中引起一直阻塞的會話是比較少見的,一旦會話結束或者解除終止,信息就會從v$session和v$session_wait中被剔除掉。這個時候如果需要進行性能觀察就需要使用ASH(Active Session History)報表了。
ASH是Oracle 10g中推出的一系列性能監控報表的一個。ASH原理同AWR有相似之處,都是采用性能鏡像收集的原理。只是ASH收集的頻率更高,大約每秒進行一次收集,這樣可以盡可能保存住高消耗會話的信息。其次就是收集范圍上ASH不會如同AWR那樣的廣范圍收集,主要集中在會話、關鍵SQL和Top活動方面。與AWR默認大約保存一個月有所不同的是,ASH保存的時段比較短,為幾天到幾周的范圍。不過對于臨時性性能分析或者關鍵業務時段分析而言已經夠用了。
在Oracle10g后,可以使用OEM的可視化工具生成ASH或者查看關鍵Top信息。但是當系統沒有OEM可以使用或者根本沒有安裝OEM的時候,手工生成ASH報告就是不錯的方式。本篇介紹如何手工生成ASH報告,權當記錄。
1、 準備環境,調用執行腳本
在AWR手工生成的文章中,筆者選擇了在Oracle服務器Linux端生成報告文件,之后再使用FTP工具進行下載到本地。本次使用客戶端的腳本進行生成,為了保證一致性,盡可能使用與服務器相同的客戶端腳本。
在命令行工具中定位到適當的目錄下,之后啟動Sqlplus工具。
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 7月 16 21:23:06 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn sys/oracle@orcl as sysdba;
已連接。
SQL>
SQL> select dbid, name,log_mode from v$database;
DBID NAME LOG_MODE
---------- --------- ------------
1192098220 ORCL NOARCHIVELOG
之后調用生成腳本ashrpt.sql。如果是使用Sqlplus工具,可以直接使用?來代指Oracle本地的$ORACLE_HOME目錄。
SQL> @?/rdbms/admin/ashrpt.sql
如果是使用PL/SQL Developer等工具,就需要直接指定目錄位置,?代指符的作用就不存在了。
調用腳本之后,就需要輸入連帶的參數信息。
2、 輸入相關參數
ü 輸入報告類型
同AWR一樣,ASH提供txt和html兩種格式的報表選擇。
SQL> @?/rdbms/admin/ashrpt.sql
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
----------- ------------ -------- ------------
1192098220 ORCL 1 orcl
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
輸入 report_type 的值:
腳本第一步要求輸入生成報告的類型,默認為html。如果希望生成txt格式,就輸入text。
ü 輸入分析時段信息
ASH是一個時段分析報告,需要用戶輸入進行分析的時間范圍開始點。
Type Specified: html
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ -------- ------------ ------------ ------------
* 1192098220 1 ORCL orcl WWW-0E6111DF
F74
Defaults to current database
Using database id: 1192098220
Defaults to current instance
Using instance number: 1
ASH Samples in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oldest ASH sample available: 13-7月 -11 19:32:48 [ 4435 mins in the past]
Latest ASH sample available: 16-7月 -11 21:25:54 [ 2 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
輸入 begin_time 的值:
由于ASH分析的粒度到秒一級別,所以輸入的時間段度是以秒的細粒度。Begin_time輸入的時間粒度有兩種方式,根據腳本中提示的內容。一種是絕對開始時間(absolute begin time),包括年月日時分秒,適當省略一部分信息意味著使用當前對應的信息。另一種是相對開始時間(relative begin time),使用“-”號開頭,表示當前時間之前多久。
輸入 begin_time 的值: 21:15:00
Report begin time specified: 21:15:00
此處我們希望分析21:15:00開始的五分鐘信息情況。
輸入了開始時間,可以定義分析持續時間duration值。
//輸入以分鐘計數的持續時間
Enter duration in minutes starting from begin time:
Defaults to SYSDATE - begin_time
Press Enter to analyze till current time
輸入 duration 的值:
輸入 duration 的值: 5
Report duration specified: 5
ü 其他相關指定參數
ASH報告中分析包括的內容很多,有時候我們可能希望分析的更加有針對性。比如特定的SQL語句分析,特定的會話信息分析等。
Using 16-7月 -11 21:15:00 as report begin time
Using 16-7月 -11 21:20: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 WATI_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:
Specify MODULE name (eg: from V$SESSION.MODULE) report target:
Defaults to NULL: (% and _ wildcards allowed)
MODULE report target specified:
Specify ACTION name (eg: from V$SESSION.ACTION) report target:
Defaults to NULL: (% and _ wildcards allowed)
ACTION report target specified:
Specify CLIENT_ID (eg: from V$SESSION.CLIENT_IDENTIFIER) report target:
Defaults to NULL: (% and _ wildcards allowed)
CLIENT_ID report target specified:
通過指定一系列的參數變量可以來指定希望分析的會話信息。
如果沒有指定,ASH會生成所有模塊的分析信息。
ü 文件名指定
最后是指定生成的文件名稱信息。
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is ashrpt_1_0716_2120.html. To use this name,
press <return> to continue, otherwise enter an alternative.
輸入 report_name 的值:
一般使用默認值就可以了。最后會將文件生成提示結束。
</TABLE><P>
<BR><A class='awr' HREF='#top'>Back to Top</A><P>
<P>
End of Report
</BODY></HTML>
Report written to ashrpt_1_0716_2120.html
SQL>
3、查看報告
在調用目錄上,就可以找到我們生成的ASH文件。
ASH Report For ORCL/orcl
DB Name DB Id Instance Inst Num Release RAC Host
------------ ----------- ------------ -------- ----------- --- ------------
ORCL 1192098220 orcl 1 10.2.0.1.0 NO WWW-0E6111DF
CPUs SGA Size Buffer Cache Shared Pool ASH Buffer Size
---- ------------------ ------------------ ------------------ ------------------
2 584M (100%) 408M (69.9%) 149M (25.6%) 4.0M (0.7%)
Analysis Begin Time: 16-7月 -11 21:15:00
Analysis End Time: 16-7月 -11 21:20:00
Elapsed Time: 5.0 (mins)
Sample Count: 5
4、結論
ASH、AWR和ADDM是Oracle推進的性能優化自動化的重要步驟階段。借助這些工具,DBA可以更好的了解分析系統性能,發現瓶頸所在,更好的維護系統正常運轉。
上述就是小編為大家分享的怎么手工生成ASH報告了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。