【最佳化】檢視歷史的執行計劃之檢視AWR報告

不一樣的天空w發表於2016-10-16

AWRAutomatic Workload Repository報告是我們進行日常資料庫效能評定、問題SQL發現的重要手段。熟練掌握AWR報告,是做好開發、運維DBA工作的重要基本功。

  

AWR報告的原理是基於Oracle資料庫的定時映象功能。預設情況下,Oracle資料庫後臺程式會以一定間隔(一小時)收集系統當前狀態映象,並且儲存在資料庫中。生成AWR報告時,只需要指定進行分析的時間段(開始映象編號和結束映象編號),就可以生成該時間段的效能分析情況。AWR映象儲存在資料庫中的時間為一個月左右。

 

定義:awr報告是oracle 10g下提供的一種效能收集和分析工具,它能提供一個時間段內整個系統資源使用情況的報告,透過這個報告,我們就可以瞭解一個系統的整個執行情況,這就像一個人全面的體檢報告。

如何分析:

*
在看awr報告的時候,我們並不需要知道所有效能指標的含義,就可以判斷出問題的所在,這些效能指標其實代表了oracle內部實現,對oracle理解的越深,在看awr報告的時候,對資料庫效能的判斷也會越準確

*
在看效能指標的時候,心裡先要明白,資料庫出現效能問題,一般都在三個地方,io,記憶體,cpu,這三個又是息息相關的(ps:我們先假設這個三個地方都沒有物理上的故障),當io負載增大時,肯定需要更多的記憶體來存放,同時也需要cpu花費更多的時間來過濾這些資料,相反,cpu時間花費多的話,有可能是解析sql語句,也可能是過濾太多的資料,到不一定是和io或記憶體有關係了

*
當我們把一條sql送到資料庫去執行的時候,我們要知道,什麼時候用到cpu,什麼時候用到記憶體,什麼時候用到io

1. cpu
:解析sql語句,嘗試多個執行計劃,最後生成一個資料庫認為是比較好的執行計劃,不一定是最優的,因為關聯表太多的時候,資料庫並不會窮舉所有的執行計劃,這會消耗太多的時間,oracle怎麼就知道這條資料時你要,另一個就不是你要的呢,這是需要cpu來過濾的
2.
記憶體:sql語句和執行計劃都需要在記憶體保留一段時間,還有取到的資料,根據lru演算法也會盡量在記憶體中保留,在執行sql語句過程中,各種表之間的連線,排序等操作也要佔用記憶體
3. io
:如果需要的資料在記憶體中沒有,則需要到磁碟中去取,就會用到物理io了,還有表之間的連線資料太多,以及排序等操作記憶體放不下的時候,也需要用到臨時表空間,也就用到物理io

連結:http://sophie2702.blog.51cto.com/676625/721588/

實驗之生成AWR報告:

1  執行指令碼,呼叫生成指令碼。程式指令碼一般儲存在$ORACLE_HOME下的rdbms/admin中,名稱為awrrpt.sql

SYS@ORA11GR2>@?/rdbms/admin/awrrpt

 

2輸入報告引數,要持續輸入一系列的報告引數。輸入生成報告型別,目前AWR提供txthtml兩種格式。需要確認生成格式,預設是html格式。

 

Current Instance

~~~~~~~~~~~~~~~~

 

   DB Id    DB Name      Inst Num Instance

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

  237843809 ORA11GR2            1 ORA11GR2

 

 

Specify the Report Type

~~~~~~~~~~~~~~~~~~~~~~~

Would you like an HTML report, or a plain text report?

Enter 'html' for an HTML report, or 'text' for plain text

Defaults to 'html'

Enter value for report_type:

 

Type Specified:  html

 

3.報告涉及天數範圍,

啟動報告後,會顯示生成例項的名稱等基本資訊。 

預設情況下,AWR會將映象資訊保留一個月。手工生成的時候,需要確認生成AWR報告的時間範圍。一般情況下,特別是生產環境下,我們通常設定1-7天也就夠用了。

 

Instances in this Workload Repository schema

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

   DB Id     Inst Num DB Name      Instance     Host

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

* 237843809         1 ORA11GR2     ORA11GR2     wang

 

Using  237843809 for database Id

Using          1 for instance number

 

 

Specify the number of days of snapshots to choose from

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Entering the number of days (n) will result in the most recent

(n) days of snapshots being listed.  Pressing <return> without

specifying a number lists all completed snapshots.

 

 

Enter value for num_days: 1

 

4.輸入開始和結束的snapshot編號

輸入天數資訊後,AWR生成程式碼會將天數範圍內的snapshot映象點列出,供輸入選擇

 

Listing the last day's Completed Snapshots

 

                                                        Snap

Instance     DB Name        Snap Id    Snap Started    Level

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

ORA11GR2     ORA11GR2            80 14 Oct 2016 07:00      1

                                 81 14 Oct 2016 08:00      1

                                 82 14 Oct 2016 09:59      1

                                 83 14 Oct 2016 14:36      1

 

 

 

Specify the Begin and End Snapshot Ids

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

5.我們需要根據列出的時間範圍,輸入開始和結束的snap編號。

 

Enter value for begin_snap: 80

Begin Snapshot Id specified: 80

 

Enter value for end_snap: 83

 

Specify the Report Name

~~~~~~~~~~~~~~~~~~~~~~~

The default report file name is awrrpt_1_80_83.html.  To use this name,

press <return> to continue, otherwise enter an alternative.

 

6.確定報告名稱,最後就是確定生成報告的名稱。可以採用預設的名稱。

 

Enter value for report_name: wang

Using the report name wang

省略…………………………………………….

<a class="awr" name="8790"></a>

<h3 class="awr">Dynamic Remastering Stats</h3>

 

<p />

                  No data exists for this section of the report.

<p />


<a class="awr" href="#top">Back to Top</a><p />

<p />

End of Report

</body></html>

Report written to wang

SYS@ORA11GR2>

 

7.檢視生成的AWR報告目錄及檔案;

[oracle@wang ~]$ pwd

/home/oracle

[oracle@wang ~]$ ls

appsandstage.dmp  appsandstage.log  BCT  wang.lst

[oracle@wang ~]$

 

具體檢視AWR報告方法:

1.在虛擬機器內用開啟資料夾的方式開啟/home/oracle/wang.lst,在虛擬機器內檢視

2.FXP工具將/home/oracle/wang.lst匯出到windows下,然後再用fiirefox瀏覽器檢視。

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

相關文章