Automatic Workload Repository,簡稱AWR,Oracle10g下提供的一種性能收集和分 析工具 ,每60分鐘采集 一次 快照 ,存 儲著近 期一段時(shí)間內(nèi)(默認(rèn) 是7天)數(shù)據(jù)庫活動的詳細(xì)信息。
ASH(Active Session History),以V$SESSION為基礎(chǔ),每秒采樣一次,記錄活動會話等待的事件,不活動的會話不會采樣 。ASH更注重Session的Event跟蹤 。在實(shí)際生產(chǎn)環(huán)境 ,Oracle的等待事件是瞬息萬 變的,AWR可能分 析不到最 近五 到十分鐘的性能數(shù)據(jù),所以可以通過ASH分析最近的會話活動。ASH 內(nèi)存 記錄數(shù)據(jù) 始終是有 限的,ASH buffers 的最 小值 為1MB,*** 值不超過30MB.為了 保存歷史 數(shù)據(jù), 引入了AWR。ASH信息 同樣被采集 寫入到AWR負(fù)載庫中。 由于內(nèi)存不是足夠的,所以MMNL進(jìn)程在ASH寫滿后會將 信息 寫出到AWR負(fù)載庫中。
Automatic Database Diagnostic Monitor ,簡稱ADDM,Oracle內(nèi)部的一個(gè)顧問系統(tǒng),能夠自動的完成最數(shù)據(jù)庫的一些優(yōu)化的建 議,給出SQL的優(yōu)化, 索引 的創(chuàng)建,統(tǒng)計(jì)量的收集 等建議。
ASH報(bào)告生成:$ORACLE_HOMESQL>@C:appmajbproduct .2.0dbhome_1RDBMSADMINashrpt.sql
AWR報(bào)告生成:SQL>C:appmajbproduct .2.0dbhome_1RDBMSADMINawrrpt.sql
ADDM報(bào)告生成:SQL>C:appmajbproduct .2.0dbhome_1RDBMSADMINaddmrpt.sql
綜上:如果在一個(gè)小時(shí)以內(nèi)發(fā)生 的我們可以通過生成ASH報(bào)告 來找出和性能相關(guān)的等待事件和SQL語句 。如果 是1小時(shí)以上或幾天 我們可以通過AWR報(bào)告來找出幾小時(shí)幾天以來最 影響系統(tǒng)的等待事件和SQL語句。ADDM報(bào)告基于AWR,默認(rèn)可以保存30天的ADDM報(bào)告
動手實(shí)驗(yàn):AWR報(bào)告的生成
在實(shí)際的生 產(chǎn)環(huán)境 中,AWR除了由Oracle自動生成,也可以通過DBMS_WORKLOAD_REPOSITORY包來 手工創(chuàng)建。
1.手工創(chuàng)建一個(gè)數(shù)據(jù)庫快照snapshotSQL> exec dbms_workload_repository.create_snapshot();
2. 生成AWR報(bào)告: 依賴一個(gè)SQL腳本:X:oracleproduct.2.0db_1RDBMSAdminawrrpt.sql
SQL>@C:appmajbproduct .2.0dbhome_1RDBMSADMINawrrpt.sql
3. 找到AWR報(bào)告分析性能瓶頸
4. 補(bǔ)充:通過SQL獲取ASHAWRADDM報(bào)告
Oracle AWR 補(bǔ)充: