羅海雄:僅僅使用AWR作報告? 性能優化還未入門(含PPT)

AWR相信DBA們都不陌生。Automatic Workload Repository,自動負載信息庫,就是Oracle把數據庫中比較重要的性能視圖裏的信息,按期從內存保存到數據庫裏面。默認狀況下,Oracle 會每一個一個小時保存一次。另外,Oracle也有機制保證信息庫的大小不至於無限增加,因此通常信息庫只保留7天的數據。默認是保存在SYSAUX表空間中。主要的信息涵蓋了Oracle較重要的性能相關信息。sql

42fdea95c50d7627fcc55e1cc1006664cb3a3f90

底層存儲爲WRH$* 表, 一般可經過DBA_HIST_*訪問,總共有100多張表。數據庫

對於AWR, 常規的用法是生成AWR或者ASH報告。性能

下面列舉了幾個最多見的方法。blog

@?/rdbms/admin/awrrpt.sql -- 標準報告,特定時間段內整體性能報告內存

@?/rdbms/admin/awrddrpt.sql -- 對比報告,兩個時間段內性能對比it

@?/rdbms/admin/ashrpt.sql -- ASH報告,特定時間段內歷史會話性能報告方法

@?/rdbms/admin/awrsqrpt.sql -- SQL報告,特定時間段內SQL性能報告im

 

AWR/ASH報告很不錯,但也有一些缺陷。d3

首先,AWR反應的是點對點的數據。好比說,我生成一個今天9:00到12:00的AWR報告,那麼,我看到的,就是12:00和9:00兩個時間點的變化。可是,9:00-10:00, 10:00-11:00,11:-12:00 分別是什麼樣的,咱們看不到。統計

另一個問題,AWR把數據都羅列出來,但卻缺少數據間的聯繫.

AWR混入大量無用數據, 致使生成AWR報告須要30秒到幾分鐘的時間,因此,若是咱們有裸數據,其實能夠更高效,更深刻的挖掘Oracle數據庫的性能信息。

在裸數據裏面,記錄的各類指標主要有4類

最多的一種是"累計值"

舉個例子 dba_hist_sysstat 裏會記錄數據庫的邏輯讀。記錄的不是這一個小時產生的邏輯讀,而是從數據庫啓動到產生快照的時候的總的邏輯讀。這就叫累計值,大多數的指標的是累計值。

也有部分數據記錄的是"當前值"

好比說,數據庫當前的PGA使用量,數據庫的會話數等,還有比較特殊的,會記錄兩次快照之間的變化值。咱們能夠認爲,這是一種預計算,最多見的記錄變化值的兩類數據,分別是SQL相關統計信息,以及段(segment)相關統計信息,固然,SQL/Segment記錄變化值的同時,也記錄了累計值。

相關文章
相關標籤/搜索