談?wù)撊绾蜲racle優(yōu)化
Oracle有很多值得學(xué)習(xí)的地方,這里我們主要介紹Oracle優(yōu)化,包括介紹可變參數(shù)的Oracle優(yōu)化等方面。數(shù)據(jù)庫系統(tǒng)和操作系統(tǒng)一樣,在計算機(jī)上安裝成功后,還需要進(jìn)一步配置和優(yōu)化,從而使其具有更強(qiáng)大的功能和運(yùn)行在最佳狀態(tài)。如果在設(shè)計階段因為各種因素沒有進(jìn)行較為合理的配置和計劃,那么就需要在后期對數(shù)據(jù)庫系統(tǒng)進(jìn)行優(yōu)化。
數(shù)據(jù)庫系統(tǒng)性能的優(yōu)化,除了在設(shè)計階段對其邏輯存儲結(jié)構(gòu)和物理存儲結(jié)構(gòu)設(shè)計進(jìn)行優(yōu)化,使之在滿足需求條件下,時空開銷性能最佳外,還可在運(yùn)行階段,采取一些優(yōu)化措施,使系統(tǒng)性能最佳。本專題所討論的性能優(yōu)化主要指運(yùn)行階段的性能優(yōu)化,即討論如何使用Oracle所提供的優(yōu)化手段來提高系統(tǒng)性能。大多數(shù)性能問題并不是一種孤立的癥狀,而是系統(tǒng)設(shè)計的結(jié)果,因此性能優(yōu)化就集中在那些導(dǎo)致不可接受特征的同一的、固定的和潛在的問題上。優(yōu)化是數(shù)據(jù)庫設(shè)計中“計劃”、 “設(shè)計”、“監(jiān)視”和“優(yōu)化”四大步驟的最后一步。除了用Oracle優(yōu)化器來優(yōu)化數(shù)據(jù)庫的性能外,DBA還可通過Oracle優(yōu)化的參數(shù)設(shè)置等手段來優(yōu)化數(shù)據(jù)庫的性能,對參數(shù)的細(xì)微優(yōu)化便能影響系統(tǒng)整體性能。
為了有目的優(yōu)化系統(tǒng)性能,首先應(yīng)明確優(yōu)化目標(biāo),然后再根據(jù)目標(biāo)優(yōu)化各種初始參數(shù)的設(shè)置,以達(dá)到更好效果??捎腥缦聨讉€優(yōu)化目標(biāo):
◆ 應(yīng)用程序設(shè)計的優(yōu)化
◆ 指定類型SQL語句的優(yōu)化
◆ 內(nèi)存使用的優(yōu)化
◆ 數(shù)據(jù)存儲、物理存儲和邏輯存儲的優(yōu)化
◆ 網(wǎng)絡(luò)通信量的優(yōu)化
DBA可選定上述一個或多個目標(biāo)來實施優(yōu)化。性能優(yōu)化主要是通過優(yōu)化初始化參數(shù)來實現(xiàn)。本專題從以下幾個方面來談?wù)勅绾蜲racle優(yōu)化數(shù)據(jù)庫,使其具有最佳性能。
(1)優(yōu)化初始參數(shù)
(2)優(yōu)化內(nèi)存
(3)優(yōu)化I/O
(4)優(yōu)化資源爭用
(5)其它參數(shù)優(yōu)化
可變參數(shù)的Oracle優(yōu)化
在對Oracle數(shù)據(jù)庫進(jìn)行優(yōu)化時,需要用到許多的參數(shù),其中有一部分參數(shù)對系統(tǒng)性能影響較大,這部分參數(shù)叫可變參數(shù)。可變參數(shù)按其作用可以分為兩大類,一大類是起限制作用的,如OPEN_CURSORS;另一大類是影響系統(tǒng)性能的,如DB_BLOCK_BUFFERS。在進(jìn)行數(shù)據(jù)庫系統(tǒng)性能優(yōu)化時,需要熟練掌握和了解一些可變參數(shù)。本文討論了一些對系統(tǒng)性能有較大影響的參數(shù)。
限制類可變參數(shù)
(1)DML_LOCKS該參數(shù)表明多少個用戶,可同時能修改多少張表。例如:有三個用戶同時修改二張表,則要求表上的總數(shù)為6。若置為0,則組織隊列不起作用,其性能會稍有提高。使用該參數(shù)時不能用DROP TABLE、CREATE INDEX或顯式封鎖。
(2)LICENSE_MAX_SESSION該參數(shù)指出允許并發(fā)用戶會話的最大數(shù)。若此參數(shù)為0,則不能實施并發(fā)。若并發(fā)的用戶會話數(shù)已達(dá)到此極限,則只有具有RESTRICTED SESSION權(quán)限的用戶才能連接到服務(wù)器。
(3)LICENSE_MAX_USERS該參數(shù)指出在一個數(shù)據(jù)庫上可建立的最大用戶數(shù)。當(dāng)達(dá)到最大值時,便不能再建新用戶,可改變此值以放松限制。在LICENSE_MAX_SESSION或 LICENSE_MAX_USER為0時,則并發(fā)會話或任何用戶都不能用。若對不同的實例,此參數(shù)不同時,則以第一個登錄的數(shù)據(jù)庫實例的參數(shù)為準(zhǔn)。
(4)MAX_DUMP_FILE_SIZE該參數(shù)指定操作系統(tǒng)中寫跟蹤文件的塊的最大值。可用此值來限制跟蹤文件的空間。
(5)OPEN_CURSORS該參數(shù)指明一個用戶進(jìn)程能同時打開光標(biāo)的最大數(shù),它能限制每個用戶進(jìn)程占用的內(nèi)存空間量。
(6)OPEN_LINKS該參數(shù)指定并發(fā)連接到遠(yuǎn)程數(shù)據(jù)庫的最大用戶進(jìn)程數(shù)。若同時引用多個數(shù)據(jù)庫,則應(yīng)該增大該值。例如:同時交替訪問A、B和C三個數(shù)據(jù)庫時,若OPEN_LINKS設(shè)置為2,則需花費(fèi)等待連接時間。此參數(shù)只用于分布事務(wù)。若該參數(shù)設(shè)置為0,則不允許進(jìn)行分布事務(wù)處理。
(7)PROCESS該參數(shù)指定同時連接到Oracle服務(wù)器上的最大用戶進(jìn)程數(shù)。該參數(shù)值包括6個后臺進(jìn)程和一個登錄,因此,該參數(shù)值為20,則只能有13或14個并發(fā)用戶連接到服務(wù)器。
(8)ROW_LOCKING該參數(shù)指定行封鎖方式。若設(shè)置為“ALWAYS”,則在修改表時只實施行封鎖。若設(shè)置為“INTENT”時,則行封鎖只適用于SELECT FOR UPDATE,而在修改時實施表封鎖。
【編輯推薦】