深入淺出等待事件和效能診斷02
在oracle 10g中,新增v$session_wait_history檢視記錄的是資料庫的歷史狀態及session的歷史等待資訊等資料,也就是活動session的最近十次的等待事件,同期oracle又推出了ASH新特性,活動session歷史資訊記錄active session history ASH。
ASH以v$session為基礎,每秒鐘取樣一次,取樣工作由oracle 10g新引入的後臺程式mmnl完成,可以檢視v$process檢視或者透過警告日誌來檢視具體的mmnl程式資訊。
Ash功能預設是開啟的,由隱含引數_ash_enable控制
SQL> col ksppinm for a20
SQL> col ksppdesc for a20
SQL> col ksppstvl for a20
SQL> select ksppinm,ksppdesc,ksppstvl from x$ksppi a,x$ksppcv b
2 where a.indx=b.indx and a.ksppinm='_ash_enable';
KSPPINM KSPPDESC KSPPSTVL
-------------------- -------------------- --------------------
_ash_enable To enable or disable TRUE
Active Session samp
ling and flushing
而ash的取樣間隔時間由另一個內部隱含引數決定_ash_sampling_interval
SQL> select ksppinm,ksppdesc,ksppstvl from x$ksppi a,x$ksppcv b
2 where a.indx=b.indx and a.ksppinm='_ash_sampling_interval';
KSPPINM KSPPDESC KSPPSTVL
-------------------- -------------------- --------------------
_ash_sampling_interv Time interval betwee 1000
al n two successive Act
ive Session samples
in millisecs
根據oracle效能和功能的特點,ash頻繁的取樣是否會影響效能,取樣物件能肯定會有影響,但是因為oracle取樣工具是直接訪問的oracle10g內部結構,及其高效的,對於效能的影響也是非常低的。
Ash資訊是在記憶體中滾動的,需要的時候跟回滾段等一樣會被覆蓋,可以透過v$active_session_history檢視來訪問ash記錄的資訊,對於活動的session,每次取樣都會在檢視中記錄一行資訊,這部分記憶體也在sga中分配
SQL> select * from v$sgastat where name like 'ASH%';
POOL NAME BYTES
------------ -------------------------- ----------
shared pool ASH buffers 2097152
生成ash報告可以透過指令碼方式或者oem圖形介面生成,ash報告包括top等待事件,top sql,top session等內容
指令碼方式:執行相應指令碼oracle_homerdbmsadminashrpt.sql然後填寫相應資訊即可在相應目錄下生成一個報告資訊。
AWR自動負載資訊庫
記憶體中記錄的ASH資訊始終是有限的,為了儲存歷史資料,這些資訊最終需要寫入磁碟,這些歷史資訊的儲存,引出了oracle 10g的AWR特性。AWR收集關於該特定資料庫的操作統計資訊和其他統計資訊,oracle以固定時間間隔(預設一個小時)為其所有重要統計資訊和負載資訊執行快照,並將快照儲存在AWR中。這些資訊在AWR中預設保留一週然後被清除。
AWR取樣工作由後臺程式mmon每60分鐘執行一次,ASH資訊也被包含在AWR負載庫中。雖然ASH buffer設計保留1小時資訊,但是經常這個記憶體是不足夠的,當ASH buffer滿了後,後臺程式mmnl將會主動將ash資訊寫出。由於資料量較大,寫出的資料佔取樣資料的10%,透過direct-path insert完成,減少redo生成,從而減少資料庫效能影響。
AWR收集統計資訊的特性statistics_level影響,該引數有3個可選值。
BASIC:AWR統計資訊收集和所有自我調整特性都被關閉
TYPICAL:資料庫收集部分統計資訊,這些資訊為典型的資料庫監控需要,預設設定
ALL:所有可能統計資訊被收集
寫出的比例受隱含引數控制_ash_disk_filter_ratio,預設是10,寫出到AWR負載庫的ASH資訊記錄在AWR的基礎表WRH$_ACTIVE_SESSION_HISTORY(這個表是分割槽表),oracle自動進行清除。AWR記錄的資訊還包括別的方面統計資訊等重要資料,oracle 10g中新增的sysaux表空間儲存awr資訊。用過statspack也可以收集統計資訊,但是無法收集session歷史資訊。
有了AWR資料倉儲後,oracle10g引入了另一個自動資料庫診斷監控程式ADDM,ADDM定期檢查資料庫的狀態,根據內建的專家系統,自動確定潛在的資料庫效能瓶頸,其執行效率很高,幾乎不影響資料庫總體效能。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057067/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於等待事件的效能診斷(轉)事件
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- Oracle診斷事件列表(轉)Oracle事件
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- 深入淺出React和ReduxReactRedux
- Part II 診斷和優化資料庫效能優化資料庫
- 深入淺出FE(十四)深入淺出websocketWeb
- 效能診斷利器JProfiler快速入門和最佳實踐
- JProfiler for Mac:提升效能和診斷問題的終極工具Mac
- 網路效能監控和診斷市場指南(2020版)
- 深入淺出:5G和HTTPHTTP
- 深入淺出JVM(十一)之如何判斷物件“已死”JVM物件
- 一次ORACLE IO效能診斷案例Oracle
- .NET Core-全域性效能診斷工具
- 淺讀-《深入淺出Nodejs》NodeJS
- Solidity事件,等待事件Solid事件
- 深入淺出mongooseGo
- HTTP深入淺出HTTP
- 深入淺出WebpackWeb
- 深入淺出HTTPHTTP
- mysqldump 深入淺出MySql
- 深入淺出——MVCMVC
- 深入淺出IO
- 深入淺出decorator
- ArrayList 深入淺出
- 深入淺出 RabbitMQMQ
- 深入淺出PromisePromise
- 深入淺出 ZooKeeper
- 深入淺出etcd系列 – 心跳和選舉
- (十八)深入淺出TCPIP之HTTP和HTTPSTCPHTTP
- 深入淺出MyBatis:反射和動態代理MyBatis反射
- 深入淺出MyBatis:JDBC和MyBatis介紹MyBatisJDBC
- sp_sysmon效能診斷結果分析(zt)
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- 深入淺出開源效能測試工具 Locust (使用篇 2)
- 兩個小問題深入淺出List的效能問題
- 深入淺出,Spring 框架和 Spring Boot 的故事框架Spring Boot
- 深入淺出Tomcat/2 - Tomcat啟動和停止Tomcat
- 深入淺出MyBatis:MyBatis解析和執行原理MyBatis