您好,登錄后才能下訂單哦!
通過案例學調優之--AWR BaseLine管理
BaseLine
Baseline 是指一個特定時間段內的性能數據,保留這些數據是為了在性能問題產生時與其他類似的工作負載時間段進行比較。Baseline 中包含的快照將從自動 AWR 清理進程中排除,并無限期的保留。
在 Oracle Database 中存在多種類型的 baseline:
Fixed Baseline:fixed baseline 表示的是您指定的一個固定的、連續的時間段。在創建 fixed baseline 之前,請認真考慮您選作 baseline 的時間段,因為該 baseline 應該代表系統處于良好的性能下運行。您可以在將來將該 baseline 與在性能較差的時間段捕獲的其他 baseline 或 snapshot 進行比較分析。
Moving Window Baseline:表示的是 AWR 保留期內存在的所有 AWR 數據。在使用自適應閾值時,它非常有用,因為數據庫可以使用整個 AWR 保留期內的 AWR 數據來計算指標值。
Oracle Database 會自動維護系統定義的 moving window baseline。系統定義的 moving window baseline 的默認窗口大小就是當前的 AWR 保留期,即默認為 8 天。如果您打算使用自適應閾值,請考慮使用更長的移動窗口——如30天,以便精確地計算閾值。您可以重新調整 moving window baseline,將移動窗口的大小調整為小于或等于 AWR 的保留天數。因此,要增加移動窗口的大小,必須要先增加相應的 AWR 保留期限。
Baseline Template:您可以使用 baseline template 創建將來某個連續時間段的 baseline。Oracle 中有兩種 baseline 模板:single 和 repeating
利用 single baseline template,您可以為將來某個單獨的連續時間段創建 baseline。該技術在某些情況下非常有用。例如,如果您想捕獲下周計劃的系統測試期間的 AWR 數據,您可以創建一個 single baseline template 來自動捕獲測試發生的時間段的統計數據。
利用 repeating baseline template ,可以根據重復的時間計劃創建和刪除 baseline。當您希望 Oracle Database 自動持續地捕獲連續時間段的統計數據時,這非常有用。例如,您可能需要在長達一個月內捕獲每周一早上的 AWR 數據。在這種情況下,您可以創建一個 repeating baseline template ,以在每周一自動創建 baseline,在指定的過期期限內自動刪除過時的 baseline。
案例:
1、創建基線
Fixed Baseline:fixed baseline 表示的是您指定的一個固定的、連續的時間段。
根據snap_id創建: DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE( start_snap_id IN NUMBER, end_snap_id IN NUMBER, baseline_name IN VARCHAR2, dbid IN NUMBER DEFAULT NULL, expiration IN NUMBER DEFAULT NULL); 根據時間創建: DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE( start_time IN DATE, end_time IN DATE, baseline_name IN VARCHAR2, dbid IN NUMBER DEFAULT NULL, expiration IN NUMBER DEFAULT NULL); 查看snapshot: 14:25:31 SYS@ test1 >select snap_id,BEGIN_INTERVAL_TIME,dbid from dba_hist_snapshot; SNAP_ID BEGIN_INTERVAL_TIME DBID ---------- --------------------------------------------------------------------------- ---------- 435 04-NOV-14 11.00.52.880 AM 1195893416 436 04-NOV-14 12.00.07.338 PM 1195893416 437 04-NOV-14 01.00.22.331 PM 1195893416 432 04-NOV-14 12.00.04.575 AM 1195893416 434 04-NOV-14 09.52.45.512 AM 1195893416 428 31-OCT-14 02.58.47.186 PM 1195893416 429 31-OCT-14 04.00.51.633 PM 1195893416 430 03-NOV-14 10.19.24.000 AM 1195893416 433 04-NOV-14 09.41.40.000 AM 1195893416 426 31-OCT-14 11.25.58.000 AM 1195893416 427 31-OCT-14 02.47.40.000 PM 1195893416 431 03-NOV-14 10.30.31.348 AM 1195893416 12 rows selected. 創建Baseline: 14:27:46 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id=>435,end_snap_id=>436,baseline_name=>'work_bs1',dbid=>1195893416,expiration=>30); PL/SQL procedure successfully completed. --435 是起始的 snapshot 序列號,436 是結束 snapshot 序列號。expiration => 30 表示該 baseline 將在30天后自動刪除,expiration =>null表示,永不過期 --創建 baseline 時,系統會自動分配一個唯一的 baseline ID 給新建的 baseline。可以通過 DBA_HIST_BASELINE 視圖查看。 查看Baseline: 14:31:10 SYS@ test1 >col baseline_name for a40 14:31:30 SYS@ test1 >select dbid,baseline_id,baseline_name,EXPIRATION,CREATION_TIME from dba_hist_baseline DBID BASELINE_ID BASELINE_NAME EXPIRATION CREATION_TIME ---------- ----------- ---------------------------------------- ---------- ------------------- 1195893416 1 work_bs1 30 2014-11-04 14:29:08 1195893416 0 SYSTEM_MOVING_WINDOW 2013-06-23 12:43:59 重命名Baseline: 14:31:30 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (old_baseline_name => 'work_bs1', new_baseline_name => 'work_bl1', dbid => 1195893416); PL/SQL procedure successfully completed. 14:35:46 SYS@ test1 >select dbid,baseline_id,baseline_name,EXPIRATION,CREATION_TIME from dba_hist_baseline; DBID BASELINE_ID BASELINE_NAME EXPIRATION CREATION_TIME ---------- ----------- ---------------------------------------- ---------- ------------------- 1195893416 1 work_bl1 30 2014-11-04 14:29:08 1195893416 0 SYSTEM_MOVING_WINDOW 2013-06-23 12:43:59 刪除Baseline: 14:35:54 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'work_bl1',cascade => FALSE, dbid => 1195893416); PL/SQL procedure successfully completed. 14:38:24 SYS@ test1 >select dbid,baseline_id,baseline_name,EXPIRATION,CREATION_TIME from dba_hist_baseline; DBID BASELINE_ID BASELINE_NAME EXPIRATION CREATION_TIME ---------- ----------- ---------------------------------------- ---------- ------------------- 1195893416 0 SYSTEM_MOVING_WINDOW 2013-06-23 12:43:59 --cascade 參數設置為 FALSE,指定只刪除。將此參數設置為 TRUE 指定刪除與該 baseline 相關聯的所有快照。
移動窗口(Moving Window)基線
Oracle 11g引入了移動窗口(Moving Window)基線的概念,用于計算閥值的度量,窗口(window)是AWR數據在保存期限內的一個視圖,窗口大小與AWR默認的保留期限8天匹配,但它可以設置為這個值的子集,在增大窗口大小前,首先要增大AWR保留期限的大小。
查詢DBA_HOST_WR_CONTROL視圖的RETENTION列,可以返回當前的AWR保留期限。
14:45:42 SYS@ test1 >SELECT retention FROM dba_hist_wr_control; RETENTION --------------------------------------------------------------------------- +00008 00:00:00.0
使用存儲過程MODIFY_SNAPSHOT_SETTINGS可以修改保留期限,指定RETENTION參數,單位分鐘。
14:48:12 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(retention=>43200); --Minutes(=30 Days) PL/SQL procedure successfully completed. 14:48:33 SYS@ test1 >SELECT retention FROM dba_hist_wr_control; RETENTION --------------------------------------------------------------------------- +00030 00:00:00.0
查詢DBA_HIST_BASELINE視圖可以返回當前的移動窗口大小。
14:48:44 SYS@ test1 >SELECT moving_window_size 14:50:30 2 FROM dba_hist_baseline 14:50:30 3 WHERE baseline_type = 'MOVING_WINDOW'; MOVING_WINDOW_SIZE ------------------ 8
使用存儲過程MODIFY_BASELINE_WINDOW_SIZE可以修改移動窗口基線,它接受WINDOW_SIZE參數,單位為天。
14:50:45 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.modify_baseline_window_size(window_size =>30); PL/SQL procedure successfully completed. 14:53:25 SYS@ test1 >SELECT moving_window_size FROM dba_hist_baseline WHERE baseline_type = 'MOVING_WINDOW'; MOVING_WINDOW_SIZE ------------------ 30 Oracle建議在使用適當的閥值時,窗口大小應大于或等于30天。(應該小于或等于snapshot的retention)
基線模板
基線模板允許你定義可能在將來要捕獲的基線,CREATE_BASELINE_TEMPLATE存儲過程定義單一基線或重復基線的捕獲,創建單一基線模板與創建基于時間的基線類似,除了將來的時間外。
15:02:44 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.create_baseline_template( start_time=>TO_DATE('09-NOV-2014 00:00', 'DD-MON-YYYY HH24:MI'), end_time=>TO_DATE('12-NOV-2014 05:00', 'DD-MON-YYYY HH24:MI'), baseline_name =>'09_11_14_BS1', template_name =>'09_11_14_TP1', expiration=> 10 ); PL/SQL procedure successfully completed. 15:05:19 SYS@ test1 >col REPEAT_INTERVAL for a10 15:05:34 SYS@ test1 >select DBID,TEMPLATE_ID,TEMPLATE_NAME,TEMPLATE_TYPE,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template DBID TEMPLATE_ID TEMPLATE_NAME TEMPLATE_ DURATION EXPIRATION REPEAT_INT ---------- ----------- ------------------------------ --------- ---------- ---------- ---------- 1195893416 1 09_11_14_TP1 SINGLE 10
重復基線模板稍微有點不同,因為它需要調度信息,START_TIME和END_TIME參數分別在模板激活和釋放時定義,DAY_OF_WEEK,HOUR_IN_DAY和DURATION定義產生基線的日期,時間和持續時間,因為模板會產生多個基線,基線名是以BASELINE_NAME_PREFIX開始的,下面的基線模板例子將在未來6個月內運行,每周星期一00:00至05:00收集基線。
15:05:35 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.create_baseline_template( day_of_week=>'MONDAY', hour_in_day=>0,duration=>5, start_time=>SYSDATE, end_time=>ADD_MONTHS(SYSDATE, 6), baseline_name_prefix =>'monday_morning_bl', template_name=>'monday_morning_tp', expiration=> NULL ); PL/SQL procedure successfully completed. 15:09:20 SYS@ test1 > select DBID,TEMPLATE_ID,TEMPLATE_NAME,TEMPLATE_TYPE,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template; DBID TEMPLATE_ID TEMPLATE_NAME TEMPLATE_ DURATION EXPIRATION REPEAT_INT ---------- ----------- ------------------------------ --------- ---------- ---------- ---------- 1195893416 1 09_11_14_TP1 SINGLE 10 1195893416 2 monday_morning_tp REPEATING 5 FREQ=WEEKL Y;INTERVAL =1;BYDAY=M ON;BYHOUR= 0;BYMINUTE =0;BYSECON D=0 15:12:14 SYS@ test1 >col BASELINE_NAME_PREFIX for a20 15:12:33 SYS@ test1 >r 1 SELECT template_name, 2 template_type, 3 baseline_name_prefix, 4 start_time, 5 end_time, 6 day_of_week, 7 hour_in_day, 8 duration, 9 expiration 10* FROM dba_hist_baseline_template TEMPLATE_NAME TEMPLATE_ BASELINE_NAME_PREFIX START_TIME END_TIME DAY_OF_WE HOUR_IN_DAY -------------------- --------- -------------------- ------------------- ------------------- --------- ----------- DURATION EXPIRATION ---------- ---------- 09_11_14_TP1 SINGLE 09_11_14_BS1 2014-11-09 00:00:00 2014-11-12 05:00:00 10 monday_morning_tp REPEATING monday_morning_bl 2014-11-04 15:09:20 2015-05-04 15:09:20 MONDAY 0 5 注意BASELINE_NAME_PREFIX列可能保留了基線前綴或完整的基線名,主要依賴于捕獲基線的類型.
DROP_BASELINE_TEMPLATE存儲過程刪除基線模板
15:17:46 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.drop_baseline_template (template_name =>'09_11_14_TP1'); PL/SQL procedure successfully completed. 15:18:26 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.drop_baseline_template (template_name => 'monday_morning_tp'); PL/SQL procedure successfully completed. 15:18:52 SYS@ test1 >select DBID,TEMPLATE_ID,TEMPLATE_NAME,TEMPLATE_TYPE,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template; no rows selected
基線視圖
DBA_HIST_BASELINE:顯示有關系統中所獲取的基線的信息。對于每個基線,該視圖顯示完整的時間范圍,以及該基線是否為默認基線。其它信息包括創建日期、上一次統計信息計算的時間和基線類型。
DBA_HIST_BASELINE_DETAILS:顯示可用來確定給定基線有效性的信息,如基線時段期間是否存在關閉操作及基線時段中由快照數據覆蓋的百分比。
DBA_HIST_BASELINE_TEMPLATE:保存了基線模板。該視圖提供了 MMON 所需的信息,用以確定何時根據模板創建基線,以及何時應刪除基線。
DBA_HIST_BASELINE_METADATA:顯示基線的元數據信息,包括名稱、類型、創建時間、模板和失效時間。
如果要在過去的某個時段創建基線,則使用 CREATE_BASELINE 過程;如果時段有任何部分處于未來,則使用CREATE_BASELINE_TEMPLATE 過程。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。