1、自動工作負載倉庫
Oracle收集了大量與效能和動作相關的統計資訊。這些資訊在記憶體中累加,並且有規律地寫入磁碟(也就是寫入構成AWR的表)。最終,這些資訊會到期並被重寫。
1.1、收集統計量
統計量收集的層級由執行個體參數STATISTICS_LEVEL控制。這個參數可能被設定為BASIC、TYPICAL或ALL。(預設TYPICAL)
- TYPICAL:允許收集正常調整所需的所有統計量,同時不會收集對效能有不良影響的統計量集合。
- BASIC:事實上禁止收集統計量,並且不存在可評估的效能優勢。
- ALL:收集與SQL執行相關的、極其詳細的統計量。進行進階的SQL語句調整,就可以使用ALL層級,不過在收集統計量時會導致效能稍有退化。
統計量在記憶體中(SGA內的資料結構中)累積。統計量只反映執行個體所作的動作,所以並不影響執行個體的效能。統計量被定時(預設每小時一次)寫入磁碟,也就是寫入AWR。這被稱為一次“快照(snapshot)”。統計量被寫入磁碟的操作由後台進程(可管理的監視器或MMON進程)完成。
MMON進程直接存取構成SGA的記憶體結構,從而也可以訪問這些記憶體結構中的統計量。這個進程可以在不需要通過會話的情況下從SGA內抽取資料。此時唯一的系統開銷是將資料實際寫入AWR。在預設情況下,這個操作每小時執行一次,因此應當不會對運行時效能產生明顯的影響。
1.2、AWR的大小與位置
AWR是位於SYSAUX資料表空間內的一組表。這些表不能被重新置放,並且存在於SYSMAN模式中。雖然我們可以作為使用者SYSMAN登入資料庫,但是無法查看AWR。訪問AWR最簡單的方式是Database Control。
快照預設在AWR中儲存7天,這個時間周期是可配置的。作為一條用於分配儲存空間大小的大致原則,如果每小時進行一次快照收集並且快照保留時間為7天,那麼AWR在SYSAUX資料表空間內可能需要200~300的空間。不過,這個資料總是會變化,根據會話數會被大幅提高。
1.3、快照的儲存
快照會在特定時間周期後被清除,在預設情況下,這個時間周期為7天。為了進行長期的調整,就必須在更長的時間周期內儲存快照。在預設情況下,AWR快照儲存7天,ADDM報告儲存30天。
2、診斷與調整顧問程式
7個顧問程式:
- Automatic Database Diagnostic Monitor(資料庫自動診斷監視程式,簡寫為ADDM)
- SQL Tuning Advisor(SQL調整顧問程式)
- SQL Access Advisor(SQL訪問顧問程式)
- Memory Advisor(記憶體顧問程式)
- Mean Time to Recover(MTTR)Advisor(平均恢復顧問程式)
- Segment Advisor(段顧問程式)
- Undo Advisor(撤銷顧問程式)
2.1、ADDM顧問程式
只要產生快照,MMON進程就會自動運行ADDM。
查看報告
這裡會顯示所有顧問程式的最近運行情況。
2.2、SQL Tuning Advisor與SQL Access Advisor
SQL Tuning Advisor將一條或多條SQL語句作為輸入,並且研究這些語句的結構與執行方式。這些SQL語句被稱為SQL Tuning Set,這個顧問程式涉及下列內容:
- 收集所涉及對象的最佳化器統計量
- 使用與語句執行相關的統計量產生SQL設定檔
- 修改代碼,從而更有效地使用SQL構造
- 重寫代碼,從而去除可能的設計錯誤
SQL Access Advisor也將SQL Tuning Set作為其輸入。這個顧問程式研究通過添加索引或物化視圖是否能夠改善SQL執行效能,此外還研究某些索引與物化視圖實際上是否會妨礙改善效能以及是否應當被刪除。
2.3、Memory Advisor
記憶體顧問程式通常能實現:如果為SGA結構或PGA分配更多的記憶體,那麼效能會得到進一步改善,不過效益會遞減。如果可能因為交換系統而需要減少記憶體的使用,那麼就能夠節約記憶體。但是,如果節省的記憶體過多,那麼效能將會退化。
2.4、 MTTR Advisor
某個執行個體在崩潰之後必須被恢複,因此可能耗費相當長的時間,這個時間就是平均恢復(Mean Time to Recover,簡寫為MTTR)。
以秒為單位進行設定的執行個體參數FAST_START_RECOVERY_TARGET能夠控制MTTR。這個參數設定的時間越短,在執行個體崩潰後就越能更快地開啟資料庫,不過聯機效能會更差。
2.5、Segment Advisor
Segment Advisor會查看段,並且能夠確定為未被使用的段所分配的空間大小是否足夠用於執行SHRINK SPACE操作。
2.6、Undo Advisor
所有DML命令都會產生撤銷資料。撤銷資料的保留時間至少是事務的時間長度,通常需要事務結束後相當長的時間內仍然儲存撤銷資料。
決定撤銷資料表空間大小的演算法基於下列方面:每秒鐘產生撤銷的速度,儲存滿足查詢已耗用時間最長需求的資料的秒數,並且可能使用閃回查詢。
3、伺服器產生的警示
3.1、警示系統體繫結構
10G版本的Oracle資料庫能夠監視自身。MMON後台進程是一個易管理的監視器,該進程可以觀察執行個體與資料庫。如果某種指標過於偏離期望值,那麼MMON進程就會產生一個警示。MMON進程產生的所有警示都被置入SYS模式中的隊列ALERT_QUE。
警示有兩種形式:閾值(有狀態的)或無閾值(無狀態的)。配置閾值警示時,必須設定某些要監視的指示值(例如資料表空間中所用空間的百分比)。當越過閾值時,就會引發一個警示,並且這個警示在採用使指標值低於觸發值的某些動作(例如為資料表空間添加更多的空間)之前會一直持續。無閾值警示由某個發生後並不持久的事件觸發,例如一個“ORA-1555:snapshot too old”錯誤。
3.2、設定閾值
某些警示被預配置了閾值,其他警示則必須在啟用之前進行設定。例如,對於“Tablespace percent full”警示來說,預設是在85%的資料表空間被填滿時發送一個警告警示以及在97%的資料表空間被填滿時發送一個臨界警示。但是,“Average File Read Time”警示沒有預設的配置。
3.3、使用基準
在不比較指標值與手動選定值的情況下,允許Oracle在效能上可接受的效能產生偏差時引發警示,這樣可以不必計算出準確的閾值。為了完成上述操作,需要建立一個“基準”。