Oracle經過長時間的發展,很多用戶都很了解Oracle優化庫高速緩沖區了,這裡我發表一下個人理解,和大家討論討論。日志緩沖區也稱為重做日志緩沖區,它包含所有變化了的數據塊。這些變化的數據塊通過Oracle日志書寫進程以一種鄰接的方式寫到重做日志文件中。
(1)獲取緩沖區活動情況
優化日志緩沖區時,首先應了解緩沖區的活動情況。這對通過查詢動態性能表(需有SELECT ANY TABLE特權)V$SYSSTAT來獲得。
(2)計算日志緩沖區的申請失敗率
數據庫管理員可以通過執行下述語句。
查看日志緩沖區的使用情況。查詢出的結果可以計算出日志緩沖區的申請失敗率。申請失敗率=requests/entrIEs。申請失敗率應該接近於0,否則說明日志緩沖區開設太小,需要增加Oracle數據庫的日志緩沖區。
(3)優化日志緩沖區
如果重做緩沖區的等待大於零,進程就要等待重做日志緩沖區的空間變成可用。此時就會影響數據庫的性能。可以通過逐步提高init.ora中參數 LOG_BUFFER的值來達到優化日志緩沖區的目的。在增加LOG_BUFFER的值時,可通過查詢動態性能表來了解和檢查日志緩沖區的活動情況。
優化共享池
共享池由庫高速緩存、字典高速緩存和SQL區組成。整個共享池的大小由參數SHARED_POOL_SIZE確定。共享池的優化主要考慮庫高速緩沖區、數據字典高速緩沖區以及會話期間信息的優化。
Oracle優化庫高速緩沖區
要Oracle優化庫高速緩沖區,必須首先了解該緩沖區的活動情況。庫高速緩沖區的活動統計信息保留在動態性能表V$LIBRARYCACHE中。優化時應使數據字典高速緩存裡的內存數據庫塊盡可能多。
(1)確定庫高速緩存的性能
通過查詢V$LIBRARYCACHE表(需有SELECT ANY TABLE特權)來了解其活動情況,以決定如何優化。說明:動態性能表V$LIBRARYCACHE中包含有NAMESPACE、PINS和RELOAD等列。其中NAMESPACE列反映了SQL語句及 PL/SQL塊的庫緩沖區的活動,其值可能是‘SQL AREA’,‘TABLE/PROCEDURE’,‘BODY’和‘TRIGGER’等;而PINS和RELOADS列給出執行調用時的錯誤信息。 PINS列給出SQL語句、PL/SQL塊及被訪問對象定義的總次數;RELOADS給出SQL語句或PL/SQL塊的隱式分析或對象定義重裝載時在庫程序緩沖區中發生的錯誤。
(2)查看reloads和pins的比率
用戶必須保證reloads和pins的比率盡可能低,其值應低於1%,若RELOADS/PINS>1%,則應給緩沖區分配附加的存儲及寫等同的SQL語句,使SQL語句與PL/SQL塊共享一個共享SQL區,這樣可減少錯誤。如果庫高速緩沖區無錯誤,則可設置初始化參數 CUTSOR_SPACE_FOR_TIME為TRUE,以加速執行調用。這可使性能稍有改善。若每個用戶可用的專用SQL區不足時,則不要將 CUTSOR_SPACE_FOR_TIME設置為TRUE。
(3)Oracle優化庫高速緩沖區
優化庫高速緩存時,可以通過增加init.ora文件中SHARED_POOL_SIZE或OPEN_CURSORS的參數值而達到滿意的優化比率。