學用ORACLE AWR和ASH特性(7)-AWR的幾個幫

junsansi發表於2009-11-11

四、AWR的幾個幫

4.1 Snapshots( 快照)

  前面操作報表生成時,snap這個關鍵字已經出現過黑多黑多次了,想必你對它充滿了疑惑,這個東西是哪尬來的咋來的誰讓它來的呢?事實上,Snap是Snapshot的簡寫,這正是AWR在自動性方面的體現,雖然你沒有建立,但是AWR自動幫你建立了(當然也可以手動建立snapshot),並且是定時(每小時)建立,定期清除(保留最近7天)。

  Snapshots 是一組某個時間點時歷史資料的集合,這些資料就可被ADDM(Automatic Database Diagnostic Monitor)用來做效能對比。預設情況下,AWR能夠自動以每小時一次的頻率生成Snapshots效能資料,並保留7天,,如果需要的話,DBA可以通過DBMS_WORKLOAD_REPOSITORY過程手動建立、刪除或修改snapshots。

    提示:呼叫DBMS_WORKLOAD_REPOSITORY包需要擁有DBA許可權。

4.1.1  手動建立Snapshots

  手動建立Snapshots,通過DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT過程,例如:

    SQL> exec dbms_workload_repository.create_snapshot();

    PL/SQL procedure successfully completed.

  然後可以通過DBA_HIST_SNAPSHOT 檢視檢視剛剛建立的Snapshots資訊。

4.1.2  手動刪除Snapshots

  刪除Snapshots是使用DBMS_WORKLOAD_REPOSITORY包的另一個過程:DROP_SNAPSHOT_RANGE,該過程在執行時可以通過指定snap_id的範圍的方式一次刪除多個Snapshots,例如:

    SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;

      COUNT(0)

    ----------

            10

    SQL> begin

      2   dbms_workload_repository.drop_snapshot_range(

      3     low_snap_id => 7509,

      4     high_snap_id => 7518,

      5     dbid => 3812548755);

      6  end;

      7  /

    PL/SQL procedure successfully completed.

    SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;

      COUNT(0)

    ----------

             0

  注意當snapshots被刪除的話,與其關聯的ASH記錄也會級聯刪除。

4.1.3  修改Snapshots設定

  通過MODIFY_SNAPSHOT_SETTINGS過程,DBA可以調整包括快照收集頻率、快照儲存時間、以及捕獲的SQL數量三個方面的設定。分別對應MODIFY_SNAPSHOT_SETTINGS的三個引數:

  • Retention :設定快照儲存的時間,單位是分鐘。可設定的值最小為1天,最大為100年。設定該引數值為0的話,就表示永久保留收集的快照資訊。
  • Interval :設定快照收集的頻率,以分鐘為單位。可設定的值最小為10分鐘,最大為1年。如果設定該引數值為0,就表示禁用AWR特性。
  • Topnsql :指定收集的比較佔用資源的SQL數量,可設定的值最小為30,最大不超過100000000。

  檢視當前快照收集的相關設定,可以通過DBA_HIST_WR_CONTROL檢視檢視,例如:

    SQL> select * from dba_hist_wr_control;

          DBID SNAP_INTERVAL            RETENTION            TOPNSQL

    ---------- ------------------------ -------------------- ----------

    3812548755 +00000 01:00:00.0        +00007 00:00:00.0    DEFAULT

  又比如通過MODIFY_SNAPSHOT_SETTTINGS過程修改snap_intrval的設定:

    SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>120);

    PL/SQL procedure successfully completed.

    SQL> select * from dba_hist_wr_control;

          DBID SNAP_INTERVAL            RETENTION            TOPNSQL

    ---------- ------------------------ -------------------- ----------

    3812548755 +00000 02:00:00.0        +00007 00:00:00.0    DEFAULT

4.2 Baselines( 基線)

  Baseline ,直譯的話叫做基線,顧名思義的方式理解,就是用於比較的基本線。因為Baseline中包含指定時間點時的效能資料,因此就可以用來與其它時間點時的狀態資料做對比,以分析效能問題。

  建立Baseline時,Snapshots是做為其中的一個組成部分存在,因此一般來說當AWR自動維護快照時,如果定義過baseline,與baseline相關的快照不會被刪除,即使是過期的快照,這樣就相當於手動保留了一份統計資料的歷史資訊,DBA可以在適當的時間將其與現有的快照進行對比,以生成相關的統計報表。

  使用者可以通過DBMS_WORKLOAD_REPOSITORY包中的相關過程,手動的建立或刪除Baseline。

4.2.1  建立Baseline

  建立Baseline使用CREATE_BASELINE過程,執行該過程時分別指定開始和結果的snap_id,然後為該baseline定義一個名稱即可,例如:

    SQL> BEGIN

      2    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id => 7550,

      3                                             end_snap_id   => 7660,

      4                                             baseline_name => ¨am_baseline¨);

      5  END;

      6  /

    PL/SQL procedure successfully completed.

    SQL> select dbid,baseline_name,start_snap_id,end_snap_id from dba_hist_baseline;

          DBID BASELINE_NAME        START_SNAP_ID END_SNAP_ID

    ---------- -------------------- ------------- -----------

    3812548755 am_baseline                   7550        7660

4.2.2  刪除Baseline

  刪除Baseline使用DROP_BASELINE過程,刪除時可以通過cascade引數選擇是否將其關聯的Snapshots級別進行刪除,例如:

    SQL> BEGIN

      2    DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ¨am_baseline¨,

      3                                           cascade       => true);

      4  END;

      5  /

    PL/SQL procedure successfully completed.

    SQL> select * from dba_hist_baseline;

    no rows selected

    SQL> select * from dba_hist_snapshot where snap_id between 7550 and 7660;

    no rows selected

  如上例中所示,刪除時指定了cascade引數值為true,對應的snap也被級聯刪除了。

檢視之前的文章:

==============================================

學用ORACLE AWR和ASH特性(6)-檢視AWR檢視

學用ORACLE AWR和ASH特性(5)-生成不同時間內的對比統計報表

學用ORACLE AWR和ASH特性(4)-生成指定SQL的統計報表

學用ORACLE AWR和ASH特性(3)-生成指定資料庫例項的統計報表

學用ORACLE AWR和ASH特性(2)-生成標準統計報表

學用ORACLE AWR和ASH特性(1)-ASH和AWR的故事

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-619398/,如需轉載,請註明出處,否則將追究法律責任。

相關文章