Automatic Workload Repository(自動負載信息庫,AWR)

1.自動負載信息庫的概述

自動負載信息庫(AWR)收集、處理和維護性能統計信息,用於問題檢測和自行調優。這些數據存儲在內容和數據庫中,這些捕獲的屬性可以顯示在報表和視圖上。

AWR收集和處理的統計信息包括:

  • 對象統計
  • 時間模型統計
  • 系統和會話統計
  • 獲取會話歷史統計

自動工作負載信息庫默認是啓用的,由STATISTICS_LEVEL初始化話參數控制。該STATISTICS_LEVEL初始化參數應該設置爲TYPICAL或ALL ,啓用AWR統計收集。默認這是爲 TYPICAL。該STATISTICS_LEVEL參數設置爲BASIC禁用許多Oracle數據庫功能,包括AWR,不推薦使用。如果STATISTICS_LEVEL 參數設置爲BASIC,你仍然可以通過DBMS_WORKLOAD_REPOSITORY包手動捕獲AWR統計。但是,由於在內存中許多系統的統計數據是被禁用,例如段統計和內存顧問信息,這些快照捕獲的統計數據可能是不完全的。

自動負載信息庫包括以下內容:

  • 快照
  • 基線
  • 自適應閥值
  • 空間消耗

1.1快照

快照是ADDM用於性能比較的指定期間的一組歷史數據。默認情況下,Oracle數據庫每個小時自動產生一次快照,並保留8天負載統計信息。你也可以手動創建快照,但通常是沒有必要的。在快照間隔產生的數據,通過自動數據庫診斷器進行分析。

AWR比較不同快照之間的差異來確定捕獲影響系統負載的SQL語句,逐漸減少被捕獲的SQL語句。

1.2基線

基線包含來自指定期間保存性能數據,當出現性能問題時,用於與其他相似的負載期間進行比較。快照中包含的基線自動爲WAR清除進程排除,並永久保留。

有以下這種基線類型:

  • 固定基線
  • 移動窗口基線
  • 模板基線

1.3子適應閥值

啓用自適應閥值,你可以監控和檢測性能問題,同時可以最大限度地減少管理開銷。自適應閥值可以針對已些系統指標自動設置警告和嚴重警告閥值。

 

1.4空間消耗

自動負載信息庫的空間消耗有以下幾個因素:

  • 系統中活動時間的會話數
  • 快照間隔
  • 歷史數據的保留期

 

2.管理自動負載信息庫

如何管理自動負載信息庫包含以下幾個方面:

  • 管理快照
  • 管理基線
  • 管理基線模板
  • 傳輸自動負載信息庫數據
  • 使用自動負載信息庫視圖
  • 生成自動負載信息庫報表
  • 生成自動負載信息庫比較期間報表
  • 生成活動會話歷史表表
  • 使用活動會話歷史表表

2.1管理快照

默認情況下,Oracle數據庫每個小時產生一次快照,並在負載信息庫中保留8天。必要時,可以通過DBMS_WORKLOAD_REPOSITORY過程手動創建,刪除和修改快照。要調用該過程,用戶必須要有DBA的權限。

管理快照的主要界面是Oracle企業管理器。只要有可能,應該使用Oracle企業管理器來管理快照。如果Oracle企業管理器不可用,則可以使用DBMS_WORKLOAD_REPOSITORY包管理快照。

2.1.1創建快照

如果你想捕獲不是系統自動生成的快照,可以通過CREATE_SNAPSHOT過程手動創建快照。例如:

BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
END;

 

2.1.2刪除快照

你可以使用DROP_SNAPSHOT_RANGE刪除一個範圍內的快照,查看快照ID列表以及數據庫ID,檢查DBA_HIST_SNAPSHOT視圖。你可以刪除以下範圍的快照:

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 22,
                           high_snap_id => 32, dbid => 3310949047);
END;

 

2.1.3修改快照設置

你可以調用間隔,保留期和捕獲指定數據庫ID的頂層SQL。但要注意這可能會影響Oracle診斷工具的使用。

INTERVAL 設置快照自動生成的頻率,以分鐘爲單位。RETENTION 設置負載信息庫保留的期限,以分鐘爲單位。TOPNSQL 設置刷新最高的SQL。使用MODIFY_SNAPSHOT_SETTINGS 過程調整設置。如下:

BEGIN
  DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 43200,
                 interval => 30, topnsql => 100, dbid => 3310949047);
END;

在這個例子中,保留期限被指定爲43200分中(30天),每個快照之間的間隔被指定爲30分鐘。你可以查詢DBA_HIST_WR_CONTROL 視圖查看數據庫實例的當前設置。

 

2.2管理基線

管理基線的主要界面是Oracle企業管理器。只要有可能,應該使用Oracle企業管理器來管理基線。如果Oracle企業管理器不可用,則可以使用DBMS_WORKLOAD_REPOSITORY包管理快照。

2.2.1創建基線

如果使用已存在的一個快照範圍創建基線。

  1. 檢閱DBA_HIST_SNAPSHOT視圖中已存在的快照,以確定你想要使用的快照範圍。
  2. 使用CREATE_BASELINE過程來創建期望快照範圍基線。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (start_snap_id => 270,
                   end_snap_id => 280, baseline_name => 'peak baseline',
                   dbid => 3310949047, expiration => 30);
END;

 

2.2.2刪除期限

如果刪除一個已存在的基線:

  1. 檢閱DBA_HIST_SNAPSHOT視圖中已存在的基線,以確定你想要刪除的基線。
  2. 使用DROP_BASELINE 過程刪除期望的基線。

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'peak baseline',
                  cascade => FALSE, dbid => 3310949047);
END;

 

2.2.3重名基線

如何重名基線:

  1. 檢閱DBA_HIST_SNAPSHOT視圖中已存在的基線,以確定你想要重名的基線。
  2. 使用DROP_BASELINE 過程刪除期望的基線。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (
                   old_baseline_name => 'peak baseline',
                   new_baseline_name => 'peak mondays',
                   dbid => 3310949047);
END;

2.2.4顯示基線度量

如何顯示在一個時間段中捕獲的基線度量閥值。

  1. 檢閱DBA_HIST_SNAPSHOT視圖中已存在的基線,以確定你想要顯示的基線的度量信息。
  2. 使用SELECT_BASELINE_METRICS函數顯示期望的度量信息。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.SELECT_BASELINE_METRICS (
                   baseline_name => 'peak baseline',
                   dbid => 3310949047,
                   instance_num => '1');
END;

 

2.2.4修改移動窗口基線的默認窗口大小

使用MODIFY_BASELINE_WINDOW_SIZE過程修改移動窗口的默認大小。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE (
                   window_size => 30,
                   dbid => 3310949047);
END;

 

2.3管理基線模板

這個功能中你可以使用基線模板自動創建基線來捕獲指定時間段。

2.3.1創建單個基線模板

使用CREATE_BASELINE_TEMPLATE過程創建單個基線模板:

BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
                   start_time => '2007-04-02 17:00:00 PST',
                   end_time => '2007-04-02 20:00:00 PST',
                   baseline_name => 'baseline_070402',
                   template_name => 'template_070402', expiration => 30,
                   dbid => 3310949047);
END;

2.3.2創建多個基線模板

使用CREATE_BASELINE_TEMPLATE過程創建多個基線模板:

BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
                   day_of_week => 'monday', hour_in_day => 17,
                   duration => 3, expiration => 30,
                   start_time => '2007-04-02 17:00:00 PST',
                   end_time => '2007-12-31 20:00:00 PST',
                   baseline_name_prefix => 'baseline_2007_mondays_',
                   template_name => 'template_2007_mondays',
                   dbid => 3310949047);
END;

 

2.3.3刪除基線模板

如何刪除一個已存在的基線模板。

  1. 檢閱DBA_HIST_SNAPSHOT視圖中已存在的基線,以確定你想要刪除的基線模板。

  2. 使用DROP_BASELINE_TEMPLATE刪除期望的基線模板。

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE (
                   template_name => 'template_2007_mondays',
                   dbid => 3310949047);
END;

 

2.4傳輸自動負載信息庫數據

Oracle數據允許系統之間傳遞AWR數據,你想使用單獨的系統來執行AWR數據分析的情況下非常有用。傳輸AWR數據,你必須先從原系統數據庫上提取AWR快照數據,然後在加載到目標系統數據庫上。

2.4.1提取數據

該awrextr.sql腳本從數據庫中提取一個快照範圍的AWR數據到數據備份導出文件中。一旦被創建,這個備份文件可以被傳輸到另一個系統,可以加載所提取的數據。要運行awrextr.sql這個腳本,必須以SYS用戶連接到數據庫。

提取AWR數據:

1.在SQL提示符下,輸入

@$ORACLE_HOME/rdbms/admin/awrextr.sql

顯示AWR模式下的數據庫列表

2.指定將要提取AWR數據的數據庫

Enter value for db_id: 1377863381

3.指定你要列出快照ID的天數

Enter value for num_days: 2

4.指定開始和結束快照ID,定義的AWR數據的快照範圍。

Enter value for begin_snap: 30
Enter value for end_snap: 40

5.目錄對象列表

目錄對象指導出備份文件存儲的目錄

Enter value for directory_name: DATA_PUMP_DIR

6.指定導出文件名稱的前綴(自動附件.dmp後綴)

Enter value for file_name: awrdata_30_40

 

2.4.2加載數據

一旦導出備份文件愛你被傳輸到目標系統,則可以使用awrload.sql腳本加載提取的AWR數據。該awrload.sql腳本首先會創建一個暫存模式,並將快照數據從導出備份文件傳輸到數據庫中。然後將數據庫從暫存模式傳輸到AWR相應的表中。要運行awrload.sql腳本,必須使用SYS用戶連接數據庫。

加載數據:

1.在SQL提示符下,輸入:

@$ORACLE_HOME/rdbms/admin/awrload.sql

2.指定導出本備份文件放置目錄的目錄對象

Enter value for directory_name: DATA_PUMP_DIR

3.指定導出備份文件名稱的前綴(自動附件.dmp後綴)

Enter value for file_name: awrdata_30_40

4.指定加載AWR數據的暫存模式

Enter value for schema_name: AWR_STAGE

5.指定暫存模式的默認表空間

Enter value for default_tablespace: SYSAUX

6.指定暫存模式的臨時表空間

Enter value for temporary_tablespace: TEMP

7.一個名爲AWR_STAGE的模式將被創建,並加載AWR數據。AWR數據被加載到AWR_STAGE模式之後,數據將被轉移到SYS模式下的AWR表中。

Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Completed 113 CONSTRAINT objects in 11 seconds
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Completed 1 REF_CONSTRAINT objects in 1 seconds
Job "SYS"."SYS_IMPORT_FULL_03" successfully completed at 09:29:30
... Dropping AWR_STAGE user
End of AWR Load

 

2.5使用自動負載信息庫視圖

通常情況下,使用Oracle企業管理器或AWR表報查看AWR數據。然而,你也可以使用以下的視圖查看統計信息:

  • V$ACTIVE_SESSION_HISTORY

  • V$METRICGROUP視圖,提供度量數據跟蹤系統性能

  • DBA_HIST視圖

DBA_HIST視圖顯示數據庫中保存的歷史數據,包括以下幾個視圖組:

DBA_HIST_ACTIVE_SESS_HISTORY 限制最近活動系統的內存活動會話內容的歷史信息

DBA_HIST_BASELINE 顯示系統中捕獲的基線信息

DBA_HIST_BASELINE_DETAILS 顯示基線的詳細信息

DBA_HIST_BASELINE_TEMPLATE 顯示用於生成基線的基線模板信息

DBA_HIST_DATABASE_INSTANCE 顯示數據庫環境信息

DBA_HIST_SNAPSHOT 顯示系統中的快照信息

DBA_HIST_SQL_PLAN 顯示SQL執行計劃

DBA_HIST_WR_CONTROL 顯示AWR控制的設置信息

 

2.6生成自動負載信息庫報告

一個AWR報告顯示兩個快照(或兩個時間點)之間的捕獲數據,AWR報告分爲多部分。HTML報告包含快速瀏覽章節的導航鏈接。該報告內容包含選定範圍快照的系統負載概括。

 

2.6.1生成快照範圍的AWR報告

awrrpt.sql腳本生成一個HTML或文本格式的快照範圍統計報告。

生成快照範圍的AWR報告:

1.在SQL提示符下,輸入

@$ORACLE_HOME/rdbms/admin/awrrpt.sql

2.指定HTML或文本報告

Enter value for report_type: html(可以輸入html/text

3.指定你要列出快照ID的天數

Enter value for num_days: 2

4.指定負載信息庫報告的開始和結束快照ID

Enter value for begin_snap: 30
Enter value for end_snap: 40

5.輸入報告名稱,或者使用默認報告名稱

Enter value for report_name:
Using the report name awrrpt_1_150_160

默認存儲在SQLPLUS的當前目錄中。如果想要存儲在其他位置,則需要指定報告的絕對路徑,

例如:

Enter value for report_name: D:\Chicle Data\awrrpt_1_150_160.html

 

2.6.2生成指定實例快照範圍的AWR報告

該awrrpti.sql腳本生成一個HTML或文本報告,顯示指定數據庫和實例的快照ID範圍的統計信息。在輸入快照範圍ID之前,需要先指定數據庫和實例。

生成指定實例快照範圍的AWR報告:

1.在SQL提示符下,輸入

@$ORACLE_HOME/rdbms/admin/awrrpti.sql

2.指定HTML或文本報表

Enter value for report_type: text

顯示可用的數據庫標識符和實例編號。

Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   DB Id    Inst Num DB Name      Instance     Host
----------- -------- ------------ ------------ ------------
 3309173529        1 MAIN         main         examp1690
 3309173529        1 TINT251      tint251      samp251

3.輸入數據庫標識符(dbid)和實例編號(inst_num)

Enter value for dbid: 3309173529
Using 3309173529 for database Id
Enter value for inst_num: 1

4.指定你要列出快照ID的天數

Enter value for num_days: 2

5.指定負載信息庫報告的開始和結束快照ID

Enter value for begin_snap: 150
Enter value for end_snap: 160

6.輸入報告名稱,或者使用默認報告名稱

Enter value for report_name:
Using the report name awrrpt_1_150_160

 

2.6.3生成SQL語句的AWR報告

awrsqrpt.sql腳本生成一個HTML或文本報告,顯示指定SQL語句的快照ID範圍的統計信息。運行此報告,檢查和調試SQL語句的性能。

生成SQL語句的AWR報告:

1.在SQL提示符下,輸入

@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

2.指定HTML或文本報表

Enter value for report_type: html

3.指定你要列出快照ID的天數

Enter value for num_days: 1

4.指定負載信息庫報告的開始和結束快照ID

Enter value for begin_snap: 146
Enter value for end_snap: 147

5.指定SQL語句的ID

Enter value for sql_id: 2b064ybzkwf1y

6.輸入報告名稱,或者使用默認報告名稱

Enter value for report_name:
Using the report name awrrpt_1_146_147.html

 

2.6.4其他AWR報告 

類似的AWR報告還有好幾個,生成的步驟也差不多,這裏就不做詳細的介紹:

生成指定實例的SQL語句的AWR報告:

@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql

生成比較期間的AWR報告:

@$ORACLE_HOME/rdbms/admin/awrddrpt.sql

生成指定實例比較期間的AWR報告:

@$ORACLE_HOME/rdbms/admin/awrddrpi.sql

生成活動會話歷史(ASH)的AWR報告:

@$ORACLE_HOME/rdbms/admin/ashrpt.sql

生成指定實例的活動會話歷史(ASH)的AWR報告:

@$ORACLE_HOME/rdbms/admin/ashrpti.sql 

 

 

 

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