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命令后,會讓有如下參數需要手動填寫:
(1)日志報告類型
Enter value for report_type: text
-- 選擇生成的ASH 報告類型,是text 還是html
(2)日志報告起始時間
Enter value for begin_time: 08/31/1620:00:00
-- 輸入ASH 開始的時間,時間格式上面的示例有說明,比如我這里是2016年8月31日晚上20:00:00開始。
(3)日志報告結束時間
Enter value for duration:7200
-- 輸入ASH 結束時間,默認是SYSDATE - begin_time,一般輸入的分析統計的總時間,一般默認是秒,比如這里7200就是2個小時,拿出2個小時的ash分析日志來。