6. 采樣數據量
由於數據量巨大,把所有ASH數據寫到磁盤上是不可接受的。一般是在寫到磁盤的時候過濾這個數據,寫出的數據占采樣數據的10%,寫出時通過direct-path insert完成,盡量減少日志生成,從而最小化數據庫性能的影響。
7. 初始化參數statistics_levelAWR的行為受到參數STATISTICS_LEVEL的影響。這個參數有三個值:
BASIC:awr統計的計算和衍生值關閉.只收集少量的數據庫統計信息.
TYPICAL:默認值.只有部分的統計收集.他們代表需要的典型監控Oracle數據庫的行為.
ALL : 所有可能的統計都被捕捉. 並且有操作系統的一些信息.這個級別的捕捉應該在很少的情況下,比如你要更多的sql診斷信息的時候才使用.
三、HOW――如何使用AWR?AWR由Oracle自動產生,但是也可以通過DBMS_WORKLOAD_REPOSITORY包來手工創建、刪除和修改。可以使用desc命令查看該包中的過程。下面只介紹幾個常用的:
1. 手工創建一個快照SQL> select count(*) from wrh$_active_session_history;
COUNT(*)
----------
SQL> begin
2 dbms_workload_repository.create_snapshot();
3 end;
4 /
PL/SQL 過程已成功完成。
SQL> select count(*) from wrh$_active_session_history;
COUNT(*)
----------
320
2. 手工刪除指定范圍的快照SQL> select * from wrh$_active_session_history where snap_id = 96;
SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME
---------- ---------- --------------- ---------- ----------------------------
96 1160732652 1 236930 06-10月-07 11.26.04.562 上午
96 1160732652 1 236930 06-10月-07 11.26.04.562 上午
96 1160732652 1 236930 06-10月-07 11.26.04.562 上午
SQL> begin
2 dbms_workload_repository.drop_snapshot_range(low_snap_id => 96, high_snap_id => 96, dbid => 1160732652);
3 end;
4 /
PL/SQL 過程已成功完成。
SQL> select * from wrh$_active_session_history where snap_id = 96;
未選定行
3. 修改采集時間和統計信息保留時間PROCEDURE MODIFY_SNAPSHOT_SETTINGS
參數名稱 類型 輸入/輸出默認值?
------------------------------ ----------------------- ------ --------
RETENTION NUMBER IN DEFAULT
INTERVAL NUMBER IN DEFAULT
TOPNSQL NUMBER IN DEFAULT
DBID NUMBER IN DEFAULT
通過修改retention參數可以修改awr信息的保留期限。默認的是七天,最小的值是一天。如果把retention設置為零,自動清除就關閉了.如果 awr發現sysaux空間不夠,它通過刪除那些最老部分的快照來重新使用這些空間.同時,也會給dba發一條警告,告訴sysaux空間不夠了(在警告日志中).
通過修改interval參數可以修改awr信息的采樣頻率。最小的值是10分鐘,默認的是60分鐘.典型的值是10,20,30,60,120等等。把 interval設為0則關閉自動捕捉快照.如將收集間隔時間改為30 分鐘一次。並且保留5天時間(注:單位都是為分鐘):
SQL> select *from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- ------------------ -------------------------- -----------
1160732652 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
PL/SQL 過程已成功完成。
SQL> SELECT *from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- ------------------- ------------------------- -----------
1160732652 +00000 00:30:00.0 +00005 00:00:00.0 DEFAULT
SQL>
4. 設置基線
基線(baseline)是一種機制,這樣你可以在重要時間的快照信息集做標記。一個基線定義在一對快照之間,快照通過他們的快照序列號識別.每個基線有且只有一對快照。
一次典型的性能調整實踐從采集量度的基准線集合、作出改動、然後采集另一個基准線集合開始。可以比較這兩個集合來檢查所作的改動的效果。在 AWR 中,對現有的已采集的快照可以執行相同類型的比較。
假定一個名稱為 apply_interest 的高度資源密集的進程在下午 1:00 到 3:00 之間運行,對應快照 ID 95 到 98。我們可以為這些快照定義一個名稱為 apply_interest_1 的基准線:
SQL> select *From dba_hist_baseline;
未選定行
SQL> select * from wrm$_baseline;
未選定行
SQL> exec dbms_workload_repository.create_baseline(95, 98, 'apply_interest_1');
PL/SQL 過程已成功完成。
這一操作將快照從 95 到 98 編號,作為上面指定的基准線的一部分。查看現有的基准線:
SQL> select *from dba_hist_baseline;
DBID BASELINE_ID BASELINE_NAME START_SNAP_ID START_SNAP_TIME END_SNAP_ID END_SNAP_TIME
---------- ----------- ------------------------- ------------- ------------------------------------- ----------- ------------
1160732652 1 apply_interest_1 95 06-10月-07 11.00.05.375 上午 98 06-10月-07 01.44.58.062 下午
SQL> select *from wrm$_baseline;
DBID BASELINE_ID BASELINE_NAME START_SNAP_ID END_SNAP_ID
---------- ----------- ---------------------------- ------------- -----------
1160732652 1 apply_interest_1 95 98
SQL>
在一些調整步驟之後,我們可以創建另一個基准線 ― 假設名稱為 apply_interest_2,然後只為那些與這兩條基准線相關的快照比較量度。
SQL> exec dbms_workload_repository.create_baseline(92, 94, 'apply_interest_2');
PL/SQL 過程已成功完成。
像這樣把快照分隔在僅僅幾個集合中有助於研究調整對於性能量度的影響。您可以在分析之後使用 drop_baseline() 來刪除基准線;快照將保留(也可級聯刪除)。此外,當清除例程開始刪除舊的快照時,與基准線相關的快照不會被清除,從而允許進行進一步的分析。
5. 刪除基線如果要刪除一個基准線:
SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'apply_interest_1', cascade=>false);
PL/SQL 過程已成功完成。
SQL> select *from wrh$_active_session_history where snap_id in (95,96,97,98);
SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME
---------- ---------- --------------- ---------- -------------------------------
95 1160732652 1 235360 06-10月-07 10.56.29.872 上午
95 1160732652 1 235230 06-10月-07 10.54.19.857 上午
95 1160732652 1 233130 06-10月-07 10.19.19.478 上午
95 1160732652 1 232830 06-10月-07 10.14.18.859 上午
95 1160732652 1 232250 06-10月-07 10.04.38.481 上午
97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME
---------- ---------- --------------- ---------- -------------------------------
97 1160732652 1 238420 06-10月-07 11.50.55.686 上午
97 1160732652 1 238230 06-10月-07 11.47.45.687 上午
98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
98 1160732652 1 239130 06-10月-07 01.27.04.161 下午
98 1160732652 1 239130 06-10月-07 01.27.04.161 下午
98 1160732652 1 239130 06-10月-07 01.27.04.161 下午
已選擇21行。
SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'apply_interest_2', cascade=>true);
PL/SQL 過程已成功完成。
SQL> select *from wrh$_active_session_history where snap_id in (92,93,94);
未選定行