Oracle中AWR的使用

db_wjw發表於2011-11-17
V\:*{behavior.:url(#default#VML);}O\:*{behavior.:url(#default#VML);}W\:*{behavior.:url(#default#VML);}

Oracle中AWR的使用

在Oracle中,動態效能檢視儲存了許多重要的累計統計資料,這些檢視對於鑑別資料庫效能非常有用。但是當關閉資料庫時,動態效能檢視中的資料會全部丟失。為了能夠隨時跟蹤資料庫效能,或是希望比較資料庫變化的效能影響,則需要一個資訊庫來儲存效能資料,由此,AWR(Automatic Workload Repository,自動工作量資料庫)應運而生。

AWR自動收集並儲存與問題的檢測和調優有關的資料庫效能統計資料,它是新的資料庫自調優機制的核心。AWR生成關鍵的效能資料的快照,並儲存在SYSAUX表空間中,各種不同的資料庫特性(ADDM,SQL Tuning Advisor等)都是用這些AWR快照中的資料來監控和診斷效能問題。

預設時,AWR每小時捕捉一次效能資料並生成一次快照,這些資料保留8天。如果按照10個併發會話來估計,預設設定大約需要200~300MB的儲存空間來儲存AWR資料。

(一) 啟用AWR

與AWR相關聯的引數為statistics_level,只有當該引數的值設定為TYPICAL 或 ALL時,才能啟用AWR功能。預設情況下該引數值為TYPICAL,如果透過show parameter statistics_level命令檢視該引數值為BASIC,需要透過以下命令修改:

SQL> alter system set statistics level=TYPICAL scope=both;

(二) 快照的管理:

1.        檢視AWR快照設定:

SQL> select dbid,snap_interval,retention from dba_hist_wr_control;

其中dbid為資料庫的標識,snap_interval為資料庫自動生成快照的間隔,retention為快照所保留的時間。

2.        修改AWR快照設定

SQL> begin

dbms_workload_repository.modify_snapshot_settings(

retention => 7200,

interval => 30,

dbid => 1293890055);

end;

其中retention和interval的單位都為分鐘。

3.        手動建立快照

SQL>begin

Dbms_workload_repository.create_snapshot();

End;

4.        刪除一個範圍內的快照:

SQL>begin

Dbms_workload_repository.drop_snapshot_range(

Low_snap_id => 40,

High_snap_id => 60,

dbid => 1293890055);

end;

5.        檢視當前在系統內已經建立的snapshot:

SQL> select snap_id,dbid,begin_interval_time,end_interval_time from dba_hist_snapshot;

(三) 基線的管理

1.        檢視已經建立的基線:

SQL>select baseline_id,baseline_name,baseline_type,start_snap_id,end_snap_id from dba_hist_baseline;

或者

SQL>select baseline_id,baseline_name,baseline_type,start_snap_time,end_snap_time from dba_hist_baseline;

2.        建立基線

SQL> begin

dbms_workload_repository.create_baseline(

start_snap_id => 7,

end_snap_id => 9,

baseline_name => 'normal baseline');

end;

其中start_snap_id為基線的起始快照序列號,end_snap_id為基線的結束快照序列號,baseline_name為基線的名稱。

3.        刪除基線

SQL> begin

dbms_workload_repository.drop_baseline(

baseline_name => 'normal baseline',

cascade => FALSE,

dbid => 1293890055);

end;

如果cascade設定為TRUE,則與該基線相關的起止快照也會被一同刪除,如果設定為FALSE,則僅僅刪除基線。

4.        重新命名基線

SQL> begin

dbms_workload_repository.rename_baseline(

old_baseline_name => 'normal baseline',

new_baseline_name => 'special baseline');

end;

(四) 基線模板的管理

1.        建立單基線模板

單基線模板建立將來某個固定時間間隔的單個基線。

SQL> begin

dbms_workload_repository.create_baseline_template(

start_time => to_date('2011-DEC-05 22:00', 'YYYY-MON-DD HH24:MI'),

end_time => to_date('2011-DEC-06 02:00', 'YYYY-MON-DD HH24:MI'),

baseline_name => 'test_baseline1',

template_name => 'test_template1',

expiration => 30);

end;

其中expiration引數為基線的有效期。

2.        建立重複基線模板

重複基線模板建立重複的基線,其時間間隔在一個時間段上重複。

SQL> begin

dbms_workload_repository.create_baseline_template(

day_of_week => 'FRIDAY',

hour_in_day => 0,

duration => 5,

start_time => SYSDATE,

end_time => ADD_MONTHS(SYSDATE, 6),

baseline_name_prefix => 'friday_morning_bl_',

template_name => 'friday_morning_tp',

expiration => NULL);

end;

(五) AWR報告

1.        建立AWR報告

Oracle提供了一個指令碼awrrpt.sql(位於$ORACLE_HOME/rdbms/admin目錄中)來生成關於AWR工具收集的統計資料的概要報告。

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

Ø        指定報告型別:html或者text。

Enter value for report_type: text

Ø        指定要顯示的快照的天數

Enter value for num_days: 7

Ø        指定AWR報告的報告範圍,即開始的快照ID和結束的快照ID。

Enter value for begin_snap: 258

Enter value for end_snap: 268

Ø        指定AWR報告的報告名。

Enter value for report_name: /tmp/awrrpt_1_258_268.txt

2.        為單條SQL語句建立AWR報告

Oracle提供了一個指令碼awrsqrpt.sql(位於$ORACLE_HOME/rdbms/admin目錄中)來生成單條SQL語句的統計資料。

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

Ø        指定報告型別:html或者text。

Enter value for report_type: text

Ø        指定要顯示的快照的天數

Enter value for num_days: 7

Ø        指定AWR報告的報告範圍,即開始的快照ID和結束的快照ID。

Enter value for begin_snap: 258

Enter value for end_snap: 268

Ø        指定SQL_ID

Enter value for sql_id: 6za2qbmbydaqh

Ø        指定AWR報告的報告名。

Enter value for report_name: /tmp/awrsqrpt_1_258_268.txt

相關文章