超過250個配置參數、上千個測量值要監視,這些都讓Oracle的管理員監視其Oracle數據庫整體健康的工作不是一項輕松的任務。Oracle提供了各種工具來監視性能,但是這還是太多。要想有效地監視你Oracle數據庫的健康,你就需要熟悉下面的腳本和查詢:
現在讓我們更加仔細地看一下這些腳本是如何工作的。STATSPACK這個工具按時間來處理Oracle的調配信息,并把這些信息記錄在多個表格里。這些表格的名稱會反映出Oracle內部查看表v$,這些名字諸如stats$sysstat和stats$sql_summary。知道了這一點,你就可以編寫一些簡單的Oracle查詢,它們會顯示性能的走勢信息。然后你就可以處理這些性能信息,并把它們送到預示模型,例如線性回歸,這會準確地告訴你更改你系統全局區域(System Global Area,SGA)內部結構的正確次數。
Listing A包含有使用這些性能信息的例子。這個腳本會生成一個在一段時間內庫緩沖區失敗率的連續總計,還會引用stats$librarycache表格。
這個腳本的輸出會指出,你需要在這一期間內通過cron job或者dbms_job為shared_pool_size計劃安排額外的內存,見圖A。
圖A
庫緩沖失敗率腳本的輸出Table A高屋建瓴地查看一些主要的事件,這些事件能夠引發動態的調配重新配置。為了說明這一點,我只會把重點放在表格里所出現的SGA的主要區域里。
表A
內存區域 | 太小的情況 | 太大的情況 |
共享池 | 庫緩沖區失敗 | 無失敗現象 |
數據緩沖區 | 命中率< 90% | 命中率> 95% |
PGA集合 | 多次通過執行的次數過高 | 100%最佳執行 |
很顯然,庫緩沖失敗率過高表示共享池太小,Oracle七個數據緩沖池中任何一個的數據緩沖命中率低于90%都表示,你應該從數據庫的其他區域里分一部分內存出來,重新分配給數據緩沖區。對于排序這樣的操作,你要看一下程序全局區域(Program Global Area,PGA)里最佳執行的百分率,并在碰到排序操作的最佳執行率低于95%的時侯增加PGA集合目標參數的值。
針對數據緩沖區和共享池大小的規則是直接了當的,而新的pga_aggregate_target參數能夠確保(對這些信息)更進一步的研究。作為一個通用的規則,當下列情況發生的時候,你就要更改pga_aggregate_target的值:
你可能會為PGA分配過多的內存,這樣在v$sysstat數據列的值――工作區執行-最佳(workarea executions—optimal)達到100%的時候,可能就要考慮減少pga_aggregate_target的值。
正如你能夠看到的那樣,對Oracle數據庫的主動監視會是相當復雜的。由于有上百個測量值和參數需要監視和重新設置,所以對Oracle的調整將會是非常具有挑戰性的。但是有了Oracle的性能測試工具和主要幾個重新配置激發器的知識,你就可以開始調整好所有的事了。