概述操作系統(tǒng)Oracle優(yōu)化
經(jīng)過長時間學(xué)習(xí)操作系統(tǒng)Oracle優(yōu)化,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。內(nèi)存的優(yōu)化歷來都是數(shù)據(jù)庫或者操作系統(tǒng)Oracle優(yōu)化的重中之重。在Oracle數(shù)據(jù)庫體系結(jié)構(gòu)中內(nèi)存優(yōu)化也是性能優(yōu)化的關(guān)鍵。優(yōu)化內(nèi)存主要是通過優(yōu)化內(nèi)存結(jié)構(gòu)來提高系統(tǒng)性能。這里所說的內(nèi)存結(jié)構(gòu)主要由專用SQL及PL/SQL區(qū)、共享池、日志緩沖區(qū)和高速緩沖存儲區(qū)構(gòu)成。
由于0racle的內(nèi)存結(jié)構(gòu)需求與應(yīng)用密切相關(guān),所以內(nèi)存結(jié)構(gòu)優(yōu)化應(yīng)在SQL語句和應(yīng)用程序優(yōu)化之后以及輸入/輸出(I/O)優(yōu)化之前進行。而且首先要操作系統(tǒng)Oracle優(yōu)化,并在處理共享池前考慮私有SQL和PL/SQL區(qū)。
SGA是對數(shù)據(jù)庫數(shù)據(jù)進行快速訪問的一個系統(tǒng)全局區(qū),其大小在實例啟動時被確定。若SGA本身需要頻繁地進行釋放、分配,則不可能達到快速訪問數(shù)據(jù)的目的。因此為了優(yōu)化系統(tǒng)性能,應(yīng)確保SGA全部被駐留在實際內(nèi)存中,而不應(yīng)采用虛擬內(nèi)存,以免使整個系統(tǒng)性能下降。
SGA是Oracle為一個實例分配的一組共享內(nèi)存緩沖區(qū)。它包含該實例的數(shù)據(jù)和控制信息。如果有多個用戶同時與同一個實例相連接時,則其SGA中的數(shù)據(jù)可為多個用戶共享,所以也叫它共享全局區(qū)。SGA在實例啟動時被自動分配,當實例關(guān)閉時被收回。SGA中的數(shù)據(jù)和控制信息可被多個進程所使用,但只能由幾個持殊進程能對其進行寫操作。SGA中所包含的存儲區(qū)根據(jù)其存放的信息類型大致可分為“數(shù)據(jù)庫緩沖存儲區(qū)”、“日志緩沖區(qū)”、“共享池”和“請求和響應(yīng)隊列”四大區(qū)域。
用戶可以通過兩種命令方式來查看SGA的大小。
(1)使用“SHOW SGA”命令
說明:用戶可以連接到Sever Manager和數(shù)據(jù)庫,然后執(zhí)行“SHOW SGA”命令來查看SGA的大小。如果數(shù)據(jù)庫實例沒有啟動,那么使用“SHOW SGA”命令將會報錯。
(2)使用“SELECT * FROM V$SGA;”查詢試圖命令
說明:使用“SELECT * FROM V$SGA;”要在“SVRMGR>”提示符下。
可以在init.ora文件中將參數(shù)PRE_PAGE_SGA的值設(shè)為“yes”,而將SGA預(yù)裝到物理內(nèi)存中,即設(shè)置PRE_PAGE_SGA=yes。
要優(yōu)化專用的SQL區(qū)及PL/SQL區(qū),就必須知道是否有不必要的語法分析調(diào)用,用戶必須盡量少的調(diào)用Parse。如果有過多的不必要的語法分析調(diào)用,就應(yīng)當設(shè)法減少它??捎酶櫣δ軄頌槊總€SQL語句輸出跟蹤信息,以檢測其語法分析步的統(tǒng)計數(shù)字count。若分析步的count統(tǒng)計值與執(zhí)行步的count統(tǒng)計值非常接近,則應(yīng)減少語法分析調(diào)用。減少語法分析調(diào)用的方法是通過所用的應(yīng)用開發(fā)工具(如PRO*C、OCI和SQL*Forms等)來控制語法分析調(diào)用以及分配和釋放專用的SQL區(qū)的頻率。
例如:在用PRO*C時,可用HOLD_CURSOR、RELEASE_CURSOR以及MAX_OPENCURSOR參數(shù)來控制專用SQL區(qū)。在使用 OCI時,可使用OSQL3或OPARSE調(diào)用來為SQL語句分配專用SQL區(qū),用OCLOSE調(diào)用關(guān)閉光標和釋放專用SQL區(qū)。在使用SQL *Forms時,同樣也可控制是否重用專用SQL區(qū):可在觸發(fā)器級、Form級或在運行時減少語法分析調(diào)用,以減少或重用專用SQL區(qū)。以上介紹操作系統(tǒng)Oracle優(yōu)化。
【編輯推薦】