【最佳化】檢視歷史的執行計劃之檢視AWR報告
AWR(Automatic 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提供txt和html兩種格式。需要確認生成格式,預設是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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檢視歷史執行計劃
- 檢視sql 執行計劃的歷史變更SQL
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- 【Oracle】如何檢視sql 執行計劃的歷史變更OracleSQL
- 【AWR】DBA_HIST檢視檢視儲存在AWR中的歷史資料
- zt_導回awr報告中的歷史執行計劃
- 檢視執行計劃
- ORACLE執行計劃的檢視Oracle
- 檢視執行計劃的方法
- 檢視執行計劃(一)
- 檢視執行計劃(二)
- 檢視sql執行計劃SQL
- 如何檢視SQL的執行計劃SQL
- Oracle檢視執行計劃的命令Oracle
- 檢視SQL的執行計劃方法SQL
- oracle檢視執行計劃的方法Oracle
- Oracle 檢視SQL的執行計劃OracleSQL
- Oracle檢視執行計劃(五)Oracle
- Oracle檢視執行計劃(六)Oracle
- Oracle檢視執行計劃(一)Oracle
- Oracle檢視執行計劃(二)Oracle
- Oracle檢視執行計劃(三)Oracle
- Oracle檢視執行計劃(四)Oracle
- oracle如何檢視執行計劃Oracle
- 檢視oracle執行計劃 - 轉Oracle
- 檢視 OceanBase 執行計劃
- 執行計劃-2:檢視更多的資訊
- 檢視ORACLE的實際執行計劃Oracle
- 【Explain Plan】檢視SQL的執行計劃AISQL
- 微課sql最佳化(11) 、如何檢視執行計劃SQL
- DBMS_XPLAN檢視執行計劃
- 使用PL/SQL檢視執行計劃SQL
- db2檢視執行計劃DB2
- 檢視sql執行計劃--set autotraceSQL
- Oracle檢視執行計劃常用方法Oracle
- TOAD檢視執行計劃表
- git檢視提交歷史Git
- Git 檢視提交歷史Git