oracle 10G特性之awr

space6212發表於2019-04-21
oracle推出已經2年多了,但只在04年用過幾個月,之後接觸的資料庫大部分是8i和9i,所以,很多10g的新特性沒有接觸到。
現在有時間可以學習10g了。打算用一系列的文章來記錄學習10g新特性的心得。

一、概述
awr(Automatic Workload Repository)是oracle 10g推出的一個強有力的資訊收集工具,它比之前的statspack有顯著的改進,收集的資訊也更多、更全面,使用方法也更簡單。

二、安裝
awr是預設安裝的,裝好了10g的資料庫就已經可以使用awr了。

三、配置
awr預設每個小時收集一次統計資訊,並且保留7天的資料。awr配置資訊可以從以下檢視查詢:
SQL> select * from dba_hist_wr_control;

DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- ---------------------------- ----------------------- ----------
3939087858 +00000 00:10:00.0 +00002 00:00:00.0 DEFAULT

awr與statspack不同,它不是由job來排程的,而是由MMON來定期收集的。

SQL> show parameter job

NAME TYPE VALUE
-------------------------- ----------- --------------------
job_queue_processes integer 10

SQL> select count(1) from dba_jobs;

COUNT(1)
----------
0

我們可以用dbms_workload_repository.modify_snapshot_settings來修改預設配置
SQL> desc dbms_workload_repository.modify_snapshot_settings
Parameter Type Mode Default?
--------- -------- ---- --------
RETENTION NUMBER IN Y --設定awr資訊保留多長時間,單位是分鐘,預設是60分鐘
INTERVAL NUMBER IN Y --設定收集時間間隔,單位是分鐘,預設是1周
TOPNSQL NUMBER IN Y --設定取多少條耗費資源的sql
DBID NUMBER IN Y

如把awr設定為10分鐘收集一次、每次收集50條耗費資源的sql,並保留2天的收集資料,可以用如下方式修改
SQL> exec dbms_workload_repository.modify_snapshot_settings(2*24*60,10,50);

PL/SQL procedure successfully completed

可以看出配置已經改變
SQL> select * from dba_hist_wr_control;

DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------------- ----------------------- ----------
3939087858 +00000 00:10:00.0 +00002 00:00:00.0 50


四、生成報表
1、呼叫指令碼
和statspack一樣,awr也提供一個指令碼來生成報表。報表的形式有兩種:text和html。強烈建議生成html格式的報表,可讀性非常強。
指令碼位置和名稱:$ORACLE_HOME/rdbms/admin/awrrpt.sql
用指令碼生成awr報表的過程與生成statspack報表非常類似,你需要以sys使用者執行這個指令碼,執行過程需要輸入報表型別、天數(用來決定顯示那幾天內的snapshot)、begin_snap、end_snap、以及報表名稱等5個引數。
如果不不想手工輸入引數,你可以修改$ORACLE_HOME/rdbms/admin/awrrpti.sql檔案,把需要到的5個變數設定好,在執行過程就不用輸入了。
修改awrrpti這個指令碼可以讓你自動生成報表。

2、直接用函式
oracle提供2個函式來生成對應的報表:
DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT :生成text報表
DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML :生成html報表

比如:
執行:select * from table(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(3939087858,1,2,3));
此時在螢幕上就列印出相關的資訊。

其實$ORACLE_HOME/rdbms/admin/awrrpt.sql就是透過呼叫以上兩個函式來生成報表的。


五、如何讀懂報表
awr產生的報表和statspack報表有點類似,要真正讀懂它,需要下很大的工夫,具體的介紹可以看:


這裡就不表述了。

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

相關文章