Oracle AWR的管理與維護(hù)詳解

awr是automatic workload repository的簡稱,中文叫著自動(dòng)工作量資料檔案庫。對(duì)于awr的管理,主要是針對(duì)快照和基線的管理而言。比如設(shè)定快照的間隔,刪除快照,設(shè)定快照的保留時(shí)間。那對(duì)于基線而言則是基線的創(chuàng)建,刪除,自動(dòng)創(chuàng)建等。本文主要描述這2部分的內(nèi)容。本文主要給大家介紹了關(guān)于oracle awr(自動(dòng)工作量資料檔案庫)管理與維護(hù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

一、快照管理

??默認(rèn)情況下,oracle數(shù)據(jù)庫每小時(shí)生成一次快照,并在工作負(fù)載庫中保留8天的統(tǒng)計(jì)信息。必要時(shí),你可以使用dbms_workload_repository程序手動(dòng)創(chuàng)建,刪除或者修改快照等。可以使用OEM以及dbms_workload_repository包管理快照。

1. 手動(dòng)創(chuàng)建快照

??使用以下過程手工創(chuàng)建快照,創(chuàng)建完成后可在數(shù)據(jù)字典DBA_HIST_SNAPSHOT查看所有快照相關(guān)信息。

BEGIN   DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();  END;  /    SELECT snap_id,     dbid,     begin_interval_time,     end_interval_time  FROM  dba_hist_snapshot  ORDER BY end_interval_time DESC;     SNAP_ID  DBID BEGIN_INTERVAL_TIME   END_INTERVAL_TIME  ---------- ---------- ---------------------------- --------------------------    164 41924548 14-APR-17 09.38.19.467 AM 14-APR-17 10.51.21.886 AM    163 41924548 14-APR-17 09.00.10.470 AM 14-APR-17 09.38.19.467 AM    162 41924548 14-APR-17 08.00.07.242 AM 14-APR-17 09.00.10.470 AM    161 41924548 14-APR-17 07.00.04.120 AM 14-APR-17 08.00.07.242 AM

2. 刪除快照

??以下過程將刪除snap_id從162到164的快照。在未指定41924548時(shí),使用當(dāng)前缺省的數(shù)據(jù)庫

BEGIN   DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 162,         high_snap_id => 164, dbid => 41924548);  END;  /

3. 修改快照的保留間隔

--查看當(dāng)前的保留策略,如下,為缺省值,采集間隔為1小時(shí),保留8天  SQL> select * from dba_hist_wr_control;      DBID SNAP_INTERVAL  RETENTION   TOPNSQL  ---------- -------------------- ------------------ ----------   41924548 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT    --下面將其修改為保留5天,采集間隔為30分鐘,topnsql為50條  BEGIN   DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 10*24*60,       interval => 30, topnsql => 50, dbid => 41924548);  END;  /    --查看修改后的結(jié)果  SQL> select * from dba_hist_wr_control;      DBID SNAP_INTERVAL  RETENTION   TOPNSQL  ---------- -------------------- ------------------ ----------   41924548 +00000 00:30:00.0 +00010 00:00:00.0 50

二、基線管理

??AWR基線可以手工創(chuàng)建和刪除,也可以自動(dòng)創(chuàng)建和刪除。對(duì)于自動(dòng)創(chuàng)建基線則是首先要?jiǎng)?chuàng)建基線樣本才能實(shí)現(xiàn)自動(dòng)創(chuàng)建基線。主要描述如下。

1. 創(chuàng)建基線

??基線的創(chuàng)建依賴于快照,因此在創(chuàng)建之前應(yīng)該得到所需時(shí)間范圍的snap_id,可以通過查詢數(shù)據(jù)字典DBA_HIST_SNAPSHOT獲得,同時(shí)在基線創(chuàng)建完成后可以從數(shù)據(jù)字典DBA_HIST_BASELINE查詢基線相關(guān)信息。

BEGIN   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (start_snap_id => 160,       end_snap_id => 161, baseline_name => 'peak_baseline',       dbid => 41924548, expiration => 10);  END;  /    SQL> SELECT baseline_id,   2   baseline_name,   3   baseline_type,   4   expiration,   5   creation_time   6 FROM dba_hist_baseline;    BASELINE_ID BASELINE_NAME   BASELINE_TYPE EXPIRATION CREATION_  ----------- ----------------------- ------------- ---------- ---------     1 peak_baseline   STATIC    10 14-APR-17     0 SYSTEM_MOVING_WINDOW MOVING_WINDOW   07-APR-17    --基于特定時(shí)間創(chuàng)建基線,如下示例  BEGIN   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (    start_time  => TO_DATE ('2017-04-14 6:00:00', 'yyyy-mm-dd hh24:mi:ss'),    end_time  => TO_DATE ('2017-04-14 8:00:00', 'yyyy-mm-dd hh24:mi:ss'),    baseline_name => 'peak_baseline2',    expiration  => 10);  END;  /

??在上面的示例中,創(chuàng)建了一個(gè)范圍為160-161的,名字為peak_baseline的基線,保留時(shí)間為10天。在超過10天后,該基線會(huì)被刪除,相應(yīng)的快照也被刪除。如果為指定失效期,則該基線以及相應(yīng)的快照被永久保留。

2. 刪除基線

BEGIN   DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'peak_baseline',       cascade => FALSE, dbid => 41924548);  END;  /

??在上面的示例中將刪除名為peak_baseline的基線,同時(shí)指定了cascade為false,也就是說在刪除基線的同時(shí),不刪除相應(yīng)的快照。

3. 基線重命名

BEGIN   DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (       old_baseline_name => 'peak_baseline',       new_baseline_name => 'peak_mondays',       dbid => 41924548);  END;  /    --驗(yàn)證結(jié)果  SQL> SELECT baseline_id,   2   baseline_name,   3   baseline_type,   4   expiration,   5   creation_time   6 FROM dba_hist_baseline;    BASELINE_ID BASELINE_NAME   BASELINE_TYPE EXPIRATION CREATION_  ----------- ----------------------- ------------- ---------- ---------     1 peak_mondays   STATIC    10 14-APR-17     0 SYSTEM_MOVING_WINDOW MOVING_WINDOW   07-APR-17

??在上面的示例中,將基線的名稱由peak_baseline修改成peak_mondays。

4. 修改缺省移動(dòng)窗口基線保留值

--查看缺省的window_size  SELECT baseline_name, baseline_type, moving_window_size  FROM dba_hist_baseline  WHERE baseline_name = 'SYSTEM_MOVING_WINDOW';    BASELINE_NAME   BASELINE_TYPE MOVING_WINDOW_SIZE  ------------------------ ------------- ------------------  SYSTEM_MOVING_WINDOW  MOVING_WINDOW     8    BEGIN   DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE (       window_size => 7,       dbid => 41924548);  END;  /    --window_size為天,只能夠小于等于當(dāng)前快照保留時(shí)間,否則報(bào)錯(cuò),如下:    ERROR at line 1:  ORA-13541: system moving window baseline size (864000)  greater than retention (691200)  ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 686  ORA-06512: at line 2

5. 管理基線樣本

創(chuàng)建單個(gè)基線模板

BEGIN   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (    start_time  => TO_DATE ('2017-04-14 17:00:00', 'yyyy-mm-dd hh24:mi:ss'),    end_time  => TO_DATE ('2017-04-14 19:00:00', 'yyyy-mm-dd hh24:mi:ss'),    baseline_name => 'baseline_140414',    template_name => 'template_140414',    expiration  => 10,    dbid   => 41924548);  END;  /    --如果創(chuàng)建基線樣本時(shí)間小于當(dāng)前時(shí)間,則收到如下錯(cuò)誤  ERROR at line 1:  ORA-13537: invalid input for create baseline template (end_time, end_time is less than SYSDATE)  ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 768  ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 818  ORA-06512: at line 2

??在上面的示例中,我們創(chuàng)建了一個(gè)單一的基線樣本,并且指定了相應(yīng)的時(shí)間范圍,基線的名稱及保留期限等。那么在這個(gè)時(shí)間范圍內(nèi)的相應(yīng)的快照會(huì)被保留,同時(shí)這個(gè)基線可以用于后續(xù)在發(fā)現(xiàn)性能問題的時(shí)候進(jìn)行比對(duì)。

創(chuàng)建重復(fù)基線樣本

??重復(fù)的基線樣本指的是在將來某個(gè)特定的時(shí)間范圍內(nèi),Oracle會(huì)參照這個(gè)設(shè)定的樣本自動(dòng)為我們創(chuàng)建基線。比如,可以創(chuàng)建一個(gè)重復(fù)的基線樣本,使得在2017年每周一9:00-11:00自動(dòng)生成基線。

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';    BEGIN   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (    day_of_week   => 'monday',    hour_in_day   => 9,    duration    => 2,    expiration    => 30,    start_time    => '2017-04-14 09:00:00',    end_time    => '2017-12-31 11:00:00',    baseline_name_prefix => 'baseline_2017_mondays_',    template_name   => 'template_2017_mondays',    dbid     => 41924548);  END;  /    -- Author  : Leshami  -- Blog  : http://blog.csdn.net/leshami  -- QQ(Weixin) : 645746311    --查看已經(jīng)創(chuàng)建的基線樣本  SQL> select t.template_name,   2  t.template_type,   3  t.start_time,   4  t.end_time,   5  t.day_of_week,   6  t.hour_in_day,   7  t.duration   8 from dba_hist_baseline_template t;    TEMPLATE_NAME   TEMPLATE_ START_TIME   END_TIME   DAY_OF_WE HOUR_IN_DAY DURATION  --------------------- --------- ------------------- ------------------- --------- ----------- --------  template_140414  SINGLE 2017-04-14 17:00:00 2017-04-14 19:00:00  template_2017_mondays REPEATING 2017-04-14 09:00:00 2017-12-31 11:00:00 MONDAY    17  3

??在上面的示例中我們創(chuàng)建了一個(gè)重復(fù)從2017年4月14日起的每周一(day_of_week)會(huì)自動(dòng)生成一個(gè)基線,其開始時(shí)間為9點(diǎn)(hour_in_day),其持續(xù)時(shí)間為2小時(shí)(duration),有效期為30天(expiration),整個(gè)基線的起止時(shí)間范圍為:2017-04-14 09:00:00至2017-12-31 11:00:00,同時(shí)也指定了基線樣本的名稱以及基線前綴名稱。

基線樣本的刪除

BEGIN   DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE (       template_name => 'template_140414',       dbid => 41924548);  END;  /

??在上面的示例中我們刪除之前創(chuàng)建的基線樣本,通過指定樣本名稱即可。

三、AWR空間占用

??AWR快照的數(shù)據(jù)全部填充在SYSAUX表空間。因此如果要保留的快照越久,意味著需要占用的SYSAUX空間越大。同時(shí)可以通過awrinfo.sql查看各個(gè)對(duì)象占用SYSAUX的詳細(xì)信息。

SQL> @?/rdbms/admin/awrinfo.sql    This script will report general AWR information  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      Specify the Report File Name  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  The default report file name is awrinfo.txt. To use this name,  press <return> to continue, otherwise enter an alternative.    Enter value for report_name:    Using the report name awrinfo.txt  No errors.     -- Author : Leshami  No errors.     -- Blog : http://blog.csdn.net/leshami  ~~~~~~~~~~~~~~~   -- QQ  : 645746311   AWR INFO Report  ~~~~~~~~~~~~~~~    Report generated at  19:48:53 on Apr 14, 2017 ( Friday ) in Timezone +08:00      Warning: Non Default AWR Setting!  --------------------------------------------------------------------------------  Snapshot interval is 60 minutes and Retention is 8 days        DB_ID DB Name HOST_PLATFORM   INST STARTUP_TIME  LAST_ASH_SID PAR  ------------ ------- ----------------------- ---- ----------------- ------------ ---  * 41924548 ORA11G ydq - Linux x86 64-bit  1 15:18:26 (04/07)  617410 NO    ########################################################  (I) AWR Snapshots Information  ########################################################    *****************************************************  (1a) SYSAUX usage - Schema breakdown (dba_segments)  *****************************************************  |  | Total SYSAUX size      617.4 MB ( 2% of 32,768.0 MB MAX with AUTOEXTEND ON )  |  | Schema SYS   occupies   206.6 MB ( 33.5% )  | Schema XDB   occupies   157.7 MB ( 25.5% )  | Schema APEX_030200 occupies    85.4 MB ( 13.8% )  | Schema MDSYS  occupies    73.9 MB ( 12.0% )

## 四、生成AWR報(bào)告

–單實(shí)例下生成AWR報(bào)告

SQL> @?/rdbms/admin/awrrpt.sql

–RAC環(huán)境下生成AWR報(bào)告

SQL> @$ORACLE_HOME/rdbms/admin/awrgrpt.sql

–指定數(shù)據(jù)庫實(shí)例生成AWR報(bào)告

SQL> @$ORACLE_HOME/rdbms/admin/awrrpti.sql

–生成SQL語句AWR報(bào)告

SQL> @$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

–指定實(shí)例生成SQL語句AWR報(bào)告

SQL> @$ORACLE_HOME/rdbms/admin/awrsqrpi.sql

–生成比較的AWR報(bào)告

SQL> @$ORACLE_HOME/rdbms/admin/awrddrpt.sql

–RAC環(huán)境下生成比較的AWR報(bào)告

@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql

五、AWR相關(guān)的重要視圖和數(shù)據(jù)字典

v$active_session_history : 顯示活躍的數(shù)據(jù)庫會(huì)話的活動(dòng),每秒采樣一次

v$metric和v$metric_history:

?? 提供度量數(shù)據(jù)來跟蹤系統(tǒng)性能。視圖被組織成好幾個(gè)組,這些組定義在v$metricgroup視圖中

DBA_HIST_ACTIVE_SESS_HISTORY

?? 展示內(nèi)存中活動(dòng)會(huì)話歷史信息

DBA_HIST_BASELINE
?? 展示捕獲的基線的信息

DBA_HIST_BASELINE_DETAILS

??展示特定基線的明細(xì)信息

DBA_HIST_BASELINE_TEMPLATE

?? 基線模板相關(guān)信息

DBA_HIST_DATABASE_INSTANCE

??數(shù)據(jù)庫環(huán)境

DBA_HIST_DB_CACHE_ADVICE

?? 根據(jù)歷史數(shù)據(jù)預(yù)測(cè)在不同的cache size下的物理讀

DBA_HIST_DISPATCHER

?? 每個(gè)snapshot下調(diào)度進(jìn)程的信息

DBA_HIST_DYN_REMASTER_STATS

?? 動(dòng)態(tài)remastering進(jìn)程的統(tǒng)計(jì)信息

DBA_HIST_IOSTAT_DETAIL
?? 按未見類型和功能來統(tǒng)計(jì)的歷史I/O信息

DBA_HIST_SHARED_SERVER_SUMMARY

?? 共享服務(wù)器的統(tǒng)計(jì)信息

DBA_HIST_SNAPSHOT

?? 快照信息

DBA_HIST_SQL_PLAN

?? 執(zhí)行計(jì)劃

DBA_HIST_WR_CONTROL

?? AWR控制信息

相關(guān)推薦:

mysql與oracle數(shù)據(jù)庫停止與啟動(dòng)的批處理文件

mysql與oracle數(shù)據(jù)庫停止與啟動(dòng)的批處理文件

mysql與oracle數(shù)據(jù)庫停止與啟動(dòng)的批處理文件

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊6 分享