AWR 使用

1.1      AWR的使用

AWR Oracle一個內置工具,它採集性能相關的統計數據,並從那些統計數據中導出Oracle性能度量,以及跟蹤潛在的問題。(想知道其原理可以百度)

       AWROracleMMon的後臺進程自動的固定時間採集一次,保存一定的時間。

1.1.1       查看快照保存時間

查看快照保存時間

select * fromdba_hist_wr_control;

以上結果表示,每小時產生一個SNAPSHOT,保留9天。

1.1.2       快照相關調整

登錄Oracle用戶;

oracle@linux162:~> sqlplus  / as sysdba

調整AWR產生snapshot的頻率和保留策略,如將收集間隔時間改爲30 分鐘一次。並且保留5天時間(單位都是分鐘):

SQL> execdbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>5*24*60);

關閉AWR,把interval設爲0則關閉自動捕捉快照:

SQL> execdbms_workload_repository.modify_snapshot_settings(interval=>0);

 

手工創建一個快照

SQL> execDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

每次測試之前爲了不影響結果,需要手動創建一個快照,以此快照爲起點。

1.1.3       生成報告

生成報告

SQL>@?/rdbms/admin/awrrpt.sql

 其實是:opt/oracle/product/11.2/db/rdbms/admin/awrrpt.sql

Specify the Report Type

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

Would you like an HTML report, or a plaintext report?

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

Defaults to 'html'

輸入 report_type的值:

 

Type Specified:  html

 

Specify the number of days of snapshots tochoose from

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

Entering the number of days (n) will resultin the most recent

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

specifying a number lists all completedsnapshots.

 

輸入 num_days 的值1    #可以爲空

 

Listing the last day's Completed Snapshots

                                                       Snap

Instance    DB Name        Snap Id    Snap Started    Level

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

orcl10g     ORCL10G            142 03 7 2009 08:11     1

                                143 03 7 2009 09:00     1

                                144 03 7 2009 10:00     1

                                145 03 7 2009 11:00     1

                                146 03 7 2009 12:01     1

 

Specify the Begin and End Snapshot Ids

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

輸入 begin_snap 的值142

Begin Snapshot Id specified: 142 輸入的起始快照開始時間

輸入 end_snap 的值146

End  Snapshot Id specified: 146 輸入的起始快照結束時間

 

Specify the Report Name

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

The default report file name isawrrpt_1_142_146.html.  To use this name,

press <return> to continue, otherwiseenter an alternative.

輸入 report_name的值/home/oracle/awr_test.html

Report written to D:/awrrpt_1_142_146.html

 

1.1.4       報告分析

1SQL ordered by Elapsed Time

  記錄了執行總和時間的TOP SQL(請注意是監控範圍內該SQL的執行時間總

和,而不是單次SQL執行時間ElapsedTime = CPU Time + Wait Time)

 

  Elapsed Time(S): SQL語句執行用總時長,此排序就是按照這個字段進行的。

注意該時間不是單個SQL跑的時間,而是監控範圍內SQL執行次數的總和時間。

單位時間爲秒。Elapsed Time = CPU Time + Wait Time

  CPU Time(s): SQL語句執行時CPU佔用時間總時長,此時間會小於等於

Elapsed Time時間。單位時間爲秒。

  Executions: SQL語句在監控範圍內的執行次數總計。

  Elap per Exec(s): 執行一次SQL的平均時間。單位時間爲秒。

  % Total DB Time: SQLElapsed Time時間佔數據庫總時間的百分比。

  SQL ID: SQL語句的ID編號,點擊之後就能導航到下邊的SQL詳細列表中,

點擊IE的返回可以回到當前SQLID的地方。

  SQL Module: 顯示該SQL 是用什麼方式連接到數據庫執行的,如果是用

SQL*Plus或者PL/SQL鏈接上來的那基本上都是有人在調試程序。一般用前臺

應用鏈接過來執行的sql該位置爲空。

 

2 SQL ordered by CPU Time:

  記錄了執行佔CPU時間總和時間最長的TOP  SQL(請注意是監控範圍內該

SQL的執行佔CPU時間總和,而不是單次SQL執行時間)

 

3 SQL ordered by Gets:

  記錄了執行佔總buffer gets(邏輯IO)TOP SQL(請注意是監控範圍內該SQL

的執行佔Gets總和,而不是單次SQL執行所佔的Gets)

 

4SQL ordered by Reads:

  記錄了執行佔總磁盤物理讀(物理IO)TOP SQL(請注意是監控範圍內該

SQL的執行佔磁盤物理讀總和,而不是單次SQL執行所佔的磁盤物理讀)

 

5SQL ordered by Executions:

  記錄了按照SQL的執行次數排序的TOP  SQL。該排序可以看出監控範圍內

SQL執行次數。

 

6SQL ordered by Parse Calls:

  記錄了SQL的軟解析次數的TOP SQL。說到軟解析(soft prase)和硬解析(hard

prase),就不能不說一下Oraclesql的處理過程。

 

7SQL ordered by Sharable Memory:

  記錄了SQL佔用librarycache的大小的TOP SQLSharable Mem (b):佔用

library cache的大小,單位是byte

 

8SQL ordered by Version Count:

  記錄了SQL的打開子游標的TOP SQL

 

 

1.1.5       AWR查看DB負載

【福建promotion】黑名單2000萬數據,SQL調整之前生成的WAR報告。

這個是我的一個測試數據,其中有Elapsed DB Time.   通過這2個數據,

就可以計算出DB 的負載情況。

 

       DBTime cpu time+wait time(不包含空閒等待)。即db time記錄的是服

務器花在數據庫運算(非後臺進程)和等待(非空閒等待)上的時間。

 Elapsed:指的是整個時間,如果有多個CPU,總時間就是Elapsed*CPU

(linux241 8cpu)

測試數據DB的負載:

       1771.37/(212.13*8)=104%

即在整個DB 運行期間,有104%的時間是在處理事務信息。(爲何會超過100%我也不知,數據不包含DB 後臺進程的時間)。此數據看出問題很嚴重。

 

 

 

       通過AWR報告,可以找出可能存在問題的SQL語句,或者數據庫嚴重負載的原因。

還有很多數據庫基本情況,可以判斷出是否存在問題。深入瞭解的話可以參考其他文檔。

http://blog.csdn.net/huiyang23/article/details/6926218

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章