袁 勇,池興穎,孫小林
(遵義師范學院 網絡管理中心,貴州 遵義 563000)
在信息系統使用過程中,隨著用戶業務量的增加,必然會對底層的數據庫帶來更大的訪問壓力。提高信息系統的訪問速度,就要提升數據庫的訪問性能,才能為用戶帶來更好的訪問體驗。本研究首先對Oracle數據庫性能調優給出常見的調整步驟,其次對其自帶的3A工具進行介紹說明,最后對3A工具進行對比分析,指出他們在實際優化過程中的使用關系,以供相關技術人員參考。
數據庫性能的提升是保障快速訪問應用系統的根本,也是信息系統的主要瓶頸之一,設計優良的數據庫和應用系統語句能帶給使用者更好的訪問體驗。一般來說,主要通過4種方式實現數據庫性能的調優。
操作系統參數的設置,對于Oracle數據庫性能也會帶來一定的影響。在設置過程中,除了保障數據庫的內存使用量,還應當預留適度的內存給操作系統,避免操作系統無資源可調度。另外還應當對內核參數kernel.shmmax,kernel.shmall,kernel.shmmni,kernel.sem等進行相應設置及調整。
在應用系統運行過程中,對內存配置參數進行優化。數據庫管理員可以對SGA中Buffer Cache,LogBuffer以及Shared Pool組件的大小進行調整,另外,還能調整PGA設置的大小。
在一些具體的部署中,可以將系統中同一個表空間的不同數據文件存放在不同的硬盤中,增加硬盤的并行處理能力,減少硬盤間輸入輸出相應時間。這樣,在業務量較大的系統中,也可以提升數據庫訪問的時間性能。
自動工作負載信息庫(Automatic Workload Repository,AWR)、活動會話歷史(Active Session History,ASH)、自動數據庫診斷監視器(Automatic Database Diagnostic Monitor,ADDM)是Oracle數據庫自帶的三大性能監控調整工具,使用好這三大工具,可以在數據庫運行過程中,生成相應的報告,查看數據庫系統的瓶頸,有針對性地解決性能瓶頸問題[1]。
Oracle數據庫安裝完成后,會自行運行AWR工具。此工具收集的數據庫信息存儲在SYSAUX表空間的SYS模式下,其命名格式為WRM$_*和WRH$_*。通過可管理性監視器(Memory Monitor process,MMON)進程,將收集到的統計信息導入數據庫,默認每小時操作一次。用戶可以根據以下命令來生成AWR報告:SQLPLUS >@?/rdbms/admin/awrrpt//。
用戶根據自身Oracle數據庫安裝目錄對應找到腳本并執行,以下的ASH,ADDM報告生成也是如此。
根據對話框向導生成AWR報告。值得注意的是,在選擇時間范圍時,中間數據庫的服務器不能停機。報告的生成類型,一般默認使用超文本標記語言(Hyper Text Markup Language,HTML)文檔,方便查看。
ASH以V$SESSION為基礎,記錄活動會話等待事件,每秒采樣一次。數據庫里不活動的會話不采樣,這些操作由進程內存監視器指示燈(Memory Monitor Light,MMNL)來完成。用戶可以根據以下的命令來生成AWR報告:SQLPLUS>@?/rdbms/ashrpt.sql。
ASH buffers最小值1 MB,最大不超過30 MB,使用內存記錄數據,ASH信息同樣是被采集并寫入AWR負載庫,操作由MMNL進程來完成。由于ASH全部寫出量大,會占用很多資源,一般不被接受。因此,通常只將收集的約10%的數據量導入AWR庫,并使用direct-path insert完成操作,減少日志生成,將這一操作對數據庫性能的影響最小化。
ADDM是Oracle數據庫內部的一個診斷監視系統。其自動給出數據庫系統性能優化的建議,給出結構化查詢語言(Structured Query Language,SQL)優化、索引創建、統計量收集等業務建議。用戶可以根據以下的命令來生成AWR報告:SQLPLUS>@?/rdbms/addmrpt.sql。
Oracle性能優化就是對最影響性能的SQL語句作調整。依靠修改系統參數、數據庫參數等來提高數據庫的性能,這只是輔助性的工作[2]。ASH,AWR,ADDM報告都能夠找出最影響性能的SQL語句。在分析ASH,AWR報告時,最主要的是關注SQL Statistics,而SQL Statistics中更主要的是關注SQL ordered by Reads和SQL ordered by Gets兩個指標。大量的Gets(邏輯讀)會占用大量的CPU時間,物理讀導致I/O的瓶頸出現。通常大量的Gets會伴隨著大量的Reads(物理讀)出現。
用數據庫自帶工具生成報告的唯一目的是要找出最影響系統性能的SQL語句。找到該SQL語句后,就對其進行優化調整。ADDM報告生成基于AWR庫,默認可以保存一個月的ADDM報告。
(1)AWR和ASH的區別在于:AWR是全面性的生成報告,而ASH更側重于對Session的Event進行跟蹤。當Oracle數據庫業務量較大時,Event wait隨時可能發生變化。在這種情況下,很可能造成AWR無法監控到。因此,為了彌補AWR這個缺點,利用ASH收集數據量并導入AWR,完成對Session的Event進行跟蹤。
(2)ASH和ADDM的區別在于:ADDM基于對Oracle數據庫當前運行狀態進行分析,對數據庫存在的問題提供指導性意見[3]。
(3)ASH,ADDM是對AWR的補充,為AWR提供協助。ASH和ADDM側重對收集的數據進行分析,AWR才是全面收集數據庫運行各方面的狀態,如圖1所示。

圖1 3A工具關系
本文首先給出Oracle數據性能調整的常用方式,從操作系統參數調整、緩存設置、硬盤I/O、3A工具監控調整性能進行簡單介紹。之后針對3A工具作出詳細的說明及報告生成方式,并進行對比分析,以供Oracle 數據庫系統相關從業技術人員在進行數據庫性能優化時參考。