轉載oracle awr

yyp2009發表於2008-11-23

AWR(Automatic Workload Repository)是Oracle 10g新提供的收集資料庫統計資訊的工具。它主要包括AWR記憶體區,歷史資料儲存檔案和ASH等部件。

AWR報告的主要內容包括以下幾部分:

前言部分:這是AWR報告的第一段,用於描述環境包括資料庫名,資料庫版本,是否為RAC節點,快照報告的採集時間等。

綜述部分:包含等待事件段,Load Profile段,例項效率統計段,Shared Pool統計段,Cache Size段,其中最重要的是等待事件段,它告訴我們在快照時間內資料庫遇到哪些效能瓶頸,它們將是效能調整或問題診斷的主要候選物件。以下Top Time Event資料摘自我的資料庫產生的AWR報告。

Event
Waits
Time(s)
Avg Wait(ms)
% Total Call Time
Wait Class
CPU time
 
17,306
 
99.6
 
db file scattered read
19,469,037
4,448
0
25.6
User I/O
log file parallel write
492,258
221
0
1.3
System I/O
log file sync
253,519
143
1
.8
Commit
read by other session
421,942
73
0
.4
User I/O

報告顯示“db file scattered read”是這個快照時間內最重要的等待事件,這種等待是由於會話在等待一個“multiblock IO”的完成,通常這是由於在大表上執行全表掃描或索引快速掃描引起。接下來可以檢視哪些SQL執行這些查詢,查詢操作集中在哪些表上,檢查SQL PLAN看是否使用了索引。

SQL部分:無效的SQL語句是效能不好的主要原因,這部分對這段時間區間內的SQL按照執行時間,邏輯讀,磁碟讀等指標進行了分類和排序,和STATSPACK不同的是,從AWR報告中可以直接查到該SQL的文字和傳送請求的客戶端程式資訊,極大的提高了SQL分析的效率。

例項活動統計部分:這部分是快照期間,對例項的各個內部模組的活動和各種資源使用情況的統計,主要包括CPU使用情況,SQL*Net訊息,連結的行存取和PGA使用情況。

段統計部分:告訴哪些段(包括表和索引)在快照期間經歷最高的磁碟讀操作,這些資訊可以幫助我們決定是否需要重建索引,或對段進行分割槽來減少發生在這些資料檔案上的I/O。

AWR的一些常用操作主要包括:

修改快照的收集和儲存時間,建立Baseline,匯出並遷移AWR資料。下面介紹一下這些功能使用方法。

預設情況下,AWR每隔1小時自動收集一個系統負載快照,並且此快照預設儲存一週。但Oracle 10g提供以下命令可以修改快照收集時間間隔和儲存時間。

execute dbms_workload_repository.modify_snapshot_settings(interval => 120,

retention => 20160);

上述命令修改快照的收集間隔為2小時,儲存時間為兩週。

可以為AWR資料建立baseline,儲存這些資料用於將來分析和比較。具體命令如下,

execute dbms_workload_repository.create_baseline (start_snap_id =>1,

end_snap_id =>100, baseline_name => 'baseline name', dbid => yourdbid);

可以將AWR資料匯出並遷移到其它資料庫以便於以後分析。Oracle10g Release2提供兩個新工具來完成匯出和遷移。AWR資料的工作。

DBMS_SWRF_INTERNAL.AWR_EXTRACT用來匯出資料,其使用方法如下:

Begin

DBMS_SWRF_INTERNAL.AWR_EXTRACT (

dmpfile   => 'awr_data.dmp',

dmpdir    => 'TMP_DIR',

bid       => 302,

eid       => 305);

end;

其中,dmpfile引數用於指定將要匯出的AWR資料檔案的名字,dmpdir是指定存放匯出檔案的目錄路徑,bid是起始快照編號,eid是結束快照編號。

DBMS_SWRF_INTERNAL用來遷移AWR資料檔案到其他資料庫。匯入AWR資料的過程分為兩個步驟,首先使用DBMS_SWRF_INTERNAL.AWR_LOAD方法把資料匯入到一個臨時模式中,本例是AWR_TEST(也可以自己定義名稱),具體方法如下:

begin

DBMS_SWRF_INTERNAL.AWR_LOAD (

SCHNAME => 'AWR_TEST',

dmpfile => 'awr_data',

dmpdir =>  'TMP_DIR');

end;

接下來把需要把AWR資料轉移到SYS模式中,操作方法如下:

exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST');

這樣AWR資料的匯入工作已經完成,現在可以使用這種方法建立一個專門存放AWR資料的資料庫,用於集中管理和分析多個資料庫例項的效能統計資料。

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

相關文章