AWR&ADDM

----
每個版本的oracle數據庫對優化器統計收集進行了改進。
在oracle10g中,優化器統計收集時完全自動化的操作,用戶完全不需要擔心統計收集操作,並且默認啓用了表監控。
表監控特性由statistics_level參數控制,當設爲basic,則禁用表監控。typical,all則啓用了監控,推薦使用typical。
如果設置爲basic,就會禁用大多數的易管理特性,包括
ash(活動會話歷史)
awr(自動工作量倉庫)
assm(自動共享內存管理)
addm(自動數據庫診斷監控程序)
統計監控跟蹤從上一次收集統計以來執行的insert,update,delete操作的近似數量,在SGA中維護受影響行的數量的信息。
直到SMON地刷新數據週期性地(大約每隔15分鐘)刷新數據字典中的數據時才修改該信息。
user_tab_modifications 描述從上一次收集統計依賴已經修改的用戶表的修改
dba,all oracle使用這些視圖標識具有陳舊統計的表。當表中10%的數據已經改動時,oracle就認爲它的統計是陳舊的。
oracle 10g只能使用CBO。因此具有更新的統計對於生成良好的執行計劃非常重要。使用dbms_Stats程序包的自動統計收集作業根據監控數據來確定何時收集具有陳舊對象的對象統計。
當創建oracle10g數據庫或升級到oracle1og時,會創建名爲gather_stats_job的作業。該作業由調度程序進行管理,並且在打開maintenance_window_group窗口組時運行。
------------------------------------------------------awr-------------------------------------------------------------------------
awr :自動工作量倉庫時公共可管理性基礎結構的主要組件,它是statspack的後繼產品。awr是診斷數據庫問題的首選機制,oracle將自動工作量倉庫描述爲“oracle 10g 的數據倉庫”。
它提供了其他CMI組件使用的數例。例如系統生成的警報和顧問,自動工作量倉庫主要的組件:內存中統計和倉庫快照。
awr依賴於MMON後臺進程,默認下:MMON進程每小時喚醒一次,並且在倉庫快照中執行統計收集。dba可以配置這個時間間隔。awr快照提供了數據庫統計的持久性視圖。在sys模式中創建awr快照,並且將其
存儲在sysaux表空間中,每秒收集一次關於活動會話的內存中統計,這些統計不會寫入到數據庫中,並且在收集新的統計時從內存中刪除。
(1)awrrpt.sql使用倉庫快照生成報表.awrrpt.sql根據開始快照和結束快照之間統計方面的差別來生成報表。
(2)awrrpti.sql該報表具有相同的輸出,但是允許用戶定義並報告特定的實例。awrrpti.sql根據指定數據庫和實例的開始快照和結束快照來顯示報表。

addm<自動數據庫診斷程序>使用快照信息自動標識性能問題,並且推薦修正這些問題的方法。
awr收集的維護用於性能檢測和自動調整目的地性能統計,可以生成awr數據的報表,並且可以通過視圖訪問它,awr可以報告最近的會話活動以及整體的系統統計和sql利用。

oracle數據庫使用awr來檢測和分析問題以及自我調整。awr收集許多不同的統計數據,包括等待事件和會話統計數據。對象使用情況統計數據以及與使用大量資源的sql語句相關的信息。
awr由許多表組成,這些表歸sys計劃所有,通常保存在sysaux表空間裏(據我所知,當前還沒有辦法將這些對象移動到其他表空間).
所有awr表名稱都以標識符‘WR’開始,有3種不同類型的名稱。
1元數據(wrm$)
2歷史數據(ara$)
3與顧問函數相關的awr表(wr2$)
例如:wrm$_snapshot 或wrh$_active_Session_history
還提供一些dba表,他們允許您查詢awr倉庫。
通過視圖v$active_session_history訪問內存中統計,該視圖查詢SGA的ash緩衝區域。這個區域固定爲每個CPU佔用2MB空間,因此刪除統計之前的時間長度將根據工作量變化。
可以使用dba_hist_snapshot視圖查看awr中快照的當前情況。
要查看awr的當前保存和時間間隔設置,可使用dba_hist_wr_control
可以使用dba_hist_baseline 視圖查看基線
可以通過OEM或提供的報告腳本來從awr生成報表

爲了啓用AWR,可以設置statistics_level初始化參數爲typical或all
如果設置了staticstics_level爲basic。則可以獲得awr數據的手工快照。但這些快照不會具有由awr自動執行的快照相同的全面性。
---------------手動管理快照
execute dbms_workload_Repository.create_snapshot();
execute dbms_workload_Repository.drop_snapshot_range(low_snap_id=>1,high_snap_id=>10);
execute dbms_workload_repository.modify_snapshot_settings(retention=>20160,interval=>15);
修改快照集合,讓它每15分鐘發生一次,快照數據保持時間固定爲20160分鐘(14天)
---------------基線管理
可以指定一組快照作爲系統性能的基線,基線定義爲一定範圍內的快照,系統基線數據用於在後面與快照進行比較。
基線的主要目的是保護awr倉庫中典型的運行時統計數據,允許您隨時運行與保護的基本快照相關的awr快照報表,並將他們與awr中包含的最近的快照進行比較,
這允許您將當前性能(和配置)與建立的基線性能進行比較。
創建,刪除基線:
execute dbms_workload_Repository.create_baseline(start_snap_id=>1,end_snap_id=>10,baseline_name=>'monday baseline');
execute dbms_workload_Repository.drop_baseline(baseline_name=>'monday baseline',cascade=>false);
如果設置cascade=true,則在刪除基線時將刪除相關的快照。
---------------------------------------------------ADDM自動數據庫診斷監控程序--------------------------------------------------------------------
ADDM由內置在oracle內核中的功能組成,由於幫助用戶更爲直觀地調整oracle實例。
自動化的ADDM是oracle rdbms的一個完整部分,它能夠收集性能統計,並且提供改動建議以解決已有的性能問題。
每次獲得AWR快照時都會執行ADDM分析,該分析使用在AWR中維護的統計來提出診斷推薦方法,除了提供修正問題的建議之外。ADDM也可以自動地修正某些問題。ADDM集成在數據庫服務器中。
因此運行分析對數據庫性能基本沒有影響。
ADDM可以指出發生了哪些造成性能問題的事件,並且對如何修正這些性能瓶頸提供了遵循的方向。ADDM將發現的時間按照影響降序排列。造成最嚴重性能影響的問題列在報表的頂端。
解決這些問題將對性能帶來最大的增益,同樣,在報表的最後一部分中,ADDM指示了不代表實例的性能問題的區域。
爲了使用ADDM對如何調整實例和sql提出建議,你需確保已使用至少2組性能數據填充AWR,每個60分鐘對其進行一次填充。如果希望在固定時間間隔以外創建快照,則可使用dbms_workload_repository.

爲了幫助診斷特定的問題,需要在希望檢查的情況下之前和之後創建快照。
10g提供了DBMS_ADVISOR的PL/SQL接口支持ADDM使用,可直接調用,也可通過腳本addmrpt.sql調用或oem。除了這個PL/SQL程序包以外,還可以使用大量視圖來檢索使用dbms_advisor api執行的
任何操作的結果。
手動訪問ADDM時,應該考慮使用和您的oracle版本一起提供的addmrpt.sql腳本。因爲該腳本消除了訪問dbms_advisor程序包所涉及的複雜性。
如果您只能選擇兩個oracle實用程序來監控和發現您系統中的性能問題,那麼這兩個實用程序應當是em和新的AWR報表或STATSPACK。
可以使用awr來收集並分析統計。
-----------------------------------statspack
可以使用statspack實用程序來監控數據庫的性能。
statspack實用程序提供了特別的功能,以類時的方式分析統計。通過獲得不同呢個時間內數據庫統計的快照,並且根據其中的區別生成報表。
statspack包含了主動調整和被動調整數據。並且可能是用來查詢絕大數相關的V$視圖和x$表,並且在一單一的報表中查看結果的最好方法。
awr報表是挖掘與statspack類似報表中總體性能數據awr的最好方法。
(1)安裝statspack  
statspack必需安裝在監控的每個數據庫中,之前,應創建一個表空間用來容納statspack數據。還需指定一個足夠大的臨時表空間,以支持statspack可能執行的大量插入和刪除操作。
spcreate.sql腳本創建一個名爲perfstat的用戶,並按計劃創建了大量的對象
(2)perstat賬戶的安全性
(3)安裝後:使用名爲statspack的程序包來管理統計收集過程以及表中的數據,所有的集合表都以“stats$”作爲名稱的開頭部分,他們都有基於V$定義的列定義。
(4)收集統計
每個統計信息的集合稱爲一個快照,可以根據兩個快照之間統計中的改變生成報表。
確保在收集統計之前將timed_statistics數據庫初始參數設置爲true。爲了生成一個統計信息的快照。可以執行statspack數據包的snap過程。
execute statspack.snap
I爲了評估特定系統測試期間的性能
II評估在一段長時間內性能的改變
爲了支持不同等級的集合,statspack提供了等級參數_i_snap_level.默認等級值被設置爲5.在改變等級前應當生成儘可能多的快照。並評估生成的報表。可使用statspack數據包的modify_Statspack_parameter
過程,可通過_i_snap_level參數指定快照的等級,並修改該參數。
在絕大多數使用大量資源的sql語句進行查詢時。5 可以提高很高的靈活性。
exections_th  sql語句至少執行了100次
disk_read_th   sql語句執行的磁盤讀操作的數量超過1000次
parse_calls_th  sql語句執行的解析調用的數量超過1000次
buffer_gets_th  sql語句執行的緩衝區讀操作的數量超過1000次
sharable_mem_th  sql語句使用的共享內存超過1MB
verson_count_th  sql語句的版本計數超過20

execute statspack.modify_statspack_parameter(i_snap_leve=>5,i_buffer_gets_th=>1000,i_modify_parameter=>'true');
在數據庫每次啓動時都會執行的觸發器。將statspack數據包固定在共享池中。
create or replace tigger pin_on_startup
after startup on database
begin
dbms_shared_pool.keep('prefstat.statspack','p');
end;/
(5)運行統計報表
爲了生成統計報告。進入軟件主目錄的/rdbms/admin目錄,作爲perfstat用戶身份登錄到sql*plus.並執行呢個在該目錄下找到的spreport.sql腳本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章