Oracle AWR報告(Automatic Workload Repository Report)是Oracle數據庫的性能分析工具之一。它記錄數據庫的負載并提供分析關鍵性能指標的詳細信息。一旦數據庫樣本收集,AWR報告將可視化索引,等待事件,SQL語句和其它重要元素,并且幫助診斷和解決數據庫性能問題。
首先,我們看一下AWR報告的主要部分。報告包含了一些關鍵參數和指標信息:
Instance Efficiency Percentages (Target 100%) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Buffer Nowait %: 99.96 Redo NoWait %: 100.00 Buffer Hit %: 99.84 In-memory Sort %: 100.00 Library Hit %: 99.33 Soft Parse %: 99.95 Execute to Parse %: 87.04 Latch Hit %: 99.86 Parse CPU to Parse Elapsd %: 87.59 % Non-Parse CPU: 99.32
其中,Buffer Hit %顯示了處于內存中的緩存塊的百分比。此數字愈高愈好,因為它顯示了少量I/O調用所需的內存量。在AWR報告中,Buffer Hit率達到99.84%。
其次,AWR報告提供了等待事件的信息,這對于識別數據庫中各種問題非常重要。下面是AWR報告的等待事件部分:
Top 5 Timed Foreground Events ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Avg wait % DB Event Waits Time Avg(ms) time Wait Class ------------------------------ ------------ -------- ------- ------ ------------ DB CPU 1,390 66.3 control file sequential read 91 312 3 14.9 System I/O db file sequential read 118 78,165 662 37.3 User I/O enq: TX - row lock contention 2 139 69.3 6.6 Application log file sync 22 374 17.0 17.9 Commit
在最上面的事件中,DB CPU等待事件是耗費時間最長的等待事件,其等待時間為1,390毫秒,占據了總時間的66.3%,非常耗費CPU。db file sequential read(用戶I/O等待)是第二大等待事件,其等待時間為78,165毫秒,占據總時間的37.3%。這個數字非常大,暗示了I/O操作所花費的時間有待優化。
最后,AWR報告還可以展示出優化SQL語句性能的信息。例如,下面的部分展示了10個執行時間最長的SQL語句:
SQL ordered by Elapsed Time DB/Inst: ORCL/ORCL Snaps: 7244-7245 Elapsed Elapsed Time Executions Rows SQL Id Time (s) per Exec (s) %Total Time --------------- --------------- --------------- -------------------------- --------------- --------------- ------------- 1 85065 67j919yqt81xz SELECT ... FROM... WHERE... 416.57 416.57 71.3 1 2534285 6q4mab8ztyum7 SELECT ... FROM... WHERE... 107.24 107.24 18.3 21 39 4pkz6v5mdy9qh SELECT ... FROM ... WHERE ... 14.93 0.71 2.6 1 340 bvnsjpsm5fft2 SELECT ... FROM ... WHERE ... 12.29 12.29 2.1 1 1079 1dbnk2c7kaccn SELECT ... FROM ... WHERE ... 8.20 8.20 1.4 4 172 d03tqdgppcwn5 SELECT ... FROM ... WHERE ... 4.53 1.13 0.8 3 42568 3n52jp9m5z5wy SELECT ... FROM ... WHERE ... 3.06 1.02 0.5 3 34596 6dvxyv1wd2cbp SELECT ... FROM ... WHERE ... 3.04 1.01 0.5 1 21 dj3amzpuu7jxh SELECT ... FROM ... WHERE ... 2.82 2.82 0.5 8 13 c70772hc5wbyd SELECT ... FROM ... WHERE ... 2.17 0.27 0.4
在這個SQL列表中,“Elapsed Time”字段表示查詢的總響應時間。除了第一條SQL語句外,其他SQL語句的平均執行時間都非常短。因此,第一條SQL語句是應該重點優化的語句。
總之,Oracle AWR報告是Oracle數據庫性能分析的重要工具。它可以展示出關鍵的性能指標、等待事件和SQL語句信息,幫助用戶診斷并解決數據庫性能問題。