Windows 2000下優(yōu)化Oracle9i性能
- 發(fā)布于:2023-10-02
- 共 201 人圍觀
優(yōu)化磁盤(pán)配置
Oracle是一個(gè)磁盤(pán)I/O強(qiáng)烈的應(yīng)用,要確保你恰當(dāng)?shù)嘏渲么疟P(pán)和文件系統(tǒng):
在磁盤(pán)上建立數(shù)據(jù)文件前首先運(yùn)行磁盤(pán)碎片整理程序
為了安全地整理磁盤(pán)碎片,需關(guān)閉打開(kāi)數(shù)據(jù)文件的實(shí)例,并且停止服務(wù)。如果你有足夠的連續(xù)磁盤(pán)空間建立數(shù)據(jù)文件,那么你就很容易避免數(shù)據(jù)文件產(chǎn)生碎片。
不要使用磁盤(pán)壓縮
Oracle數(shù)據(jù)文件不支持磁盤(pán)壓縮。
不要使用磁盤(pán)加密
加密象磁盤(pán)壓縮一樣增加了一個(gè)處理層降低磁盤(pán)讀寫(xiě)速度。如果你擔(dān)心自己的數(shù)據(jù)可能泄密,就使用dbms_obfuscation包和label security選擇性地加密數(shù)據(jù)的敏感部分。
不要使用超過(guò)70%的磁盤(pán)空間
剩余的磁盤(pán)空間存放系統(tǒng)臨時(shí)數(shù)據(jù)和作為磁盤(pán)碎片整理程序存放中間數(shù)據(jù)。
使用RAID
選擇硬件RAID超過(guò)軟件RAID;
帶有硬件RAID控制器;
日志文件不要放在RAID 5卷上,因?yàn)镽AID 5讀性能高而寫(xiě)性能差。
把日志文件和歸檔日志放在與控制文件和數(shù)據(jù)文件分離的磁盤(pán)控制系統(tǒng)。
分離頁(yè)面交換文件到多個(gè)磁盤(pán)物理卷
跨越至少兩個(gè)磁盤(pán)建立兩個(gè)頁(yè)面文件。你可以建立四個(gè)頁(yè)面文件并在性能上受益,確保所有頁(yè)面文件的大小之和至少是物理內(nèi)存的兩倍。
優(yōu)化CPU使用和配置
取消屏幕保護(hù)
屏幕保護(hù)吸取大量的CPU資源而且提供的是對(duì)數(shù)據(jù)庫(kù)服務(wù)器毫無(wú)意義的用處,特別要禁止3GL屏幕保護(hù),如果你必須使用屏幕保護(hù)就用“空屏幕”減少CPU使用。
把系統(tǒng)配置為應(yīng)用服務(wù)器
運(yùn)行控制面板的“系統(tǒng)”,在高級(jí)選項(xiàng)卡中設(shè)置“性能選項(xiàng)”到“后臺(tái)程序”,這提供優(yōu)先權(quán)給應(yīng)用程序,象類(lèi)似Oracle的服務(wù),反對(duì)用戶在圖形用戶界面啟動(dòng)一個(gè)笨拙的程序。
監(jiān)視系統(tǒng)中消耗中斷的硬件
消耗CPU中斷和時(shí)間的硬件應(yīng)該避免使用。通常這樣的硬件是便宜的因?yàn)樗压ぷ鬏d入CPU,而CPU要處理外圍的高級(jí)性能的硬件,通常需要注意:
1、支持總線控制的網(wǎng)卡
2、支持DMA而不支持PIO的磁盤(pán)控制器
使用性能監(jiān)視器跟蹤處理器對(duì)象的%Interrupt Time 計(jì)數(shù)器數(shù)值,和這個(gè)計(jì)數(shù)器的基線和標(biāo)準(zhǔn),然后監(jiān)視問(wèn)題。
3、有利避免中斷的方式是使用硬件RAID控制器代替Windows 2000支持的軟件RAID。
保持最小的安全審計(jì)記錄
在專(zhuān)用服務(wù)器上運(yùn)行Oracle
Oracle是內(nèi)存消耗大戶,不要在執(zhí)行下列功能的系統(tǒng)上運(yùn)行Oracle數(shù)據(jù)庫(kù):
1、主域或備份域控制器(Windows 2000下都稱(chēng)域控制器)
2、文件服務(wù)器
3、打印服務(wù)器
4、遠(yuǎn)程訪問(wèn)服務(wù)器
5、路由器、代理或防火墻
不要使用花哨的壁紙(如果使用,要盡量減小壁紙文件大小
禁止非必須的服務(wù)
最好禁止系統(tǒng)里非必須的服務(wù),如果時(shí)而需要某些服務(wù)功能,可將啟動(dòng)類(lèi)型設(shè)置為“手動(dòng)”,要做到這一點(diǎn)首先同網(wǎng)絡(luò)管理員驗(yàn)證實(shí)際的服務(wù)需求:
1、如果你的系統(tǒng)不需要打印機(jī),通常停止這個(gè)服務(wù)并設(shè)置為手動(dòng);
2、停止License Logging Service服務(wù)除非你對(duì)它有特殊要求;
3、不應(yīng)該使用DHCP服務(wù),并禁止它;
4、不要自動(dòng)啟動(dòng)你不需要的程序;
檢查菜單“開(kāi)始/程序/啟動(dòng)”里的內(nèi)容,刪除不需要的程序。
優(yōu)化網(wǎng)絡(luò)配置
網(wǎng)絡(luò)配置是性能調(diào)整的一項(xiàng)很重要的內(nèi)容,而且很容易隱藏性能瓶頸。
配置網(wǎng)卡使用最快速度和有效模式
這針對(duì)自動(dòng)檢測(cè),大多數(shù)缺省安裝是NIC,如果這是可選的就盡量調(diào)整為“全雙工”和最大化線速度。
刪除不需要的網(wǎng)絡(luò)協(xié)議
只保留TCP/IP協(xié)議。
優(yōu)化網(wǎng)絡(luò)協(xié)議綁定順序
在每個(gè)網(wǎng)卡上設(shè)置主協(xié)議,典型地是TCP/IP,到協(xié)議列表的頂端。
為Oracle禁止或優(yōu)化文件共享
理想地應(yīng)該禁止文件共享功能來(lái)最小化安全泄露和網(wǎng)絡(luò)交通,但如果你需要使用文件和打印共享,那么就配置系統(tǒng)中每個(gè)網(wǎng)卡的“連接屬性”,設(shè)置“最大化網(wǎng)絡(luò)應(yīng)用程序數(shù)據(jù)吞吐量”
內(nèi)存調(diào)優(yōu)
內(nèi)存優(yōu)化是Windows平臺(tái)的關(guān)鍵設(shè)置,首先了解一下Windows 2000平臺(tái)的Oracle結(jié)構(gòu):
基于線程的結(jié)構(gòu)
Windows2000是基于線程的結(jié)構(gòu),相反,Unix操作系統(tǒng)是基于進(jìn)程的結(jié)構(gòu)。這意味著Windows中更多的應(yīng)用,包括Oracle在內(nèi),是以帶有多個(gè)線程的單個(gè)進(jìn)程的形式執(zhí)行,這種基于線程的結(jié)構(gòu)的確給Window2000帶來(lái)優(yōu)勢(shì)——更容易共享內(nèi)存。內(nèi)存空間為每個(gè)進(jìn)程分配,進(jìn)程間共享內(nèi)存很笨拙,要使用附加編碼,線程是進(jìn)程的子集,使用比進(jìn)程少得多的內(nèi)存。特定進(jìn)程的所有線程共享同樣的進(jìn)程內(nèi)存空間,同一進(jìn)程的線程間共享內(nèi)存比不同進(jìn)程共享內(nèi)存要快,這給基于線程的結(jié)構(gòu)很大優(yōu)勢(shì),更有效。
在服務(wù)器上運(yùn)行的每個(gè)應(yīng)用程序都有一個(gè),而且只有一個(gè)進(jìn)程。進(jìn)程是應(yīng)用程序的載體,是用來(lái)容納執(zhí)行應(yīng)用程序?qū)嶋H工作的線程的。從用戶角度看,進(jìn)程是不用任何專(zhuān)門(mén)工具就可以看到的組件。進(jìn)程對(duì)其他應(yīng)用程序組件的作用就像容器一樣。它持有虛擬的存儲(chǔ)空間、數(shù)據(jù)、系統(tǒng)資源和應(yīng)用程序設(shè)置。雖然線程可以分配、重新分配和釋放內(nèi)存,但是進(jìn)程接受初始的內(nèi)存分配,并將它分配到請(qǐng)求內(nèi)存的所有線程。線程是包含在進(jìn)程內(nèi)共享所有進(jìn)程資源的單個(gè)執(zhí)行路徑。它還包含堆棧(存儲(chǔ)在內(nèi)存中的變量和其他數(shù)據(jù))、CPU寄存器的狀態(tài)信息(所以,線程可以恢復(fù)它的環(huán)境)、和在系統(tǒng)調(diào)度程序的執(zhí)行列表中的一個(gè)登錄項(xiàng)。每個(gè)線程規(guī)定了完成任務(wù)應(yīng)用程序需要作的某種工作。
使用Task Manager的主要問(wèn)題是看不到任何線程。Task Manager被設(shè)計(jì)成從進(jìn)程層將應(yīng)用程序作為整體看待。當(dāng)然還可以使用性能監(jiān)視器來(lái)監(jiān)視Windows下的Oracle內(nèi)存使用。
從“開(kāi)始/程序/管理工具”選擇“性能”啟動(dòng)“系統(tǒng)監(jiān)視器”。注意,“性能”包括兩個(gè)MMC插件:“系統(tǒng)監(jiān)視器”和“性能日志和變更”。這時(shí),需要一些被監(jiān)視的計(jì)數(shù)器(計(jì)數(shù)器是一些性能指示器,用于對(duì) Windows 2000的特殊對(duì)象進(jìn)行統(tǒng)計(jì),例如統(tǒng)計(jì)特定線程所要求的處理器時(shí)間)。單擊“添加”按鈕(在圖中看起來(lái)象一個(gè)加號(hào)),將看到“添加計(jì)數(shù)器”對(duì)話框。首先需要選擇想監(jiān)視的“性能”對(duì)象。在包含“進(jìn)程”對(duì)象和“線程”對(duì)象的“性能”下拉列表中選擇。
進(jìn)程觀察器(Process Viewer)是比較容易檢查線程和進(jìn)程的方法之一??梢栽?Windows 2000 Support Tools 或Windows 2000 Resource Kit內(nèi)找到一些工具。Windows 2000 Support Tools是Windows 2000的一部分,但是并不自動(dòng)安裝。支持安裝的Windows Installer文件在%CDROM%\SUPPORT\TOOLS\目錄下。只要在2000RKST.MSJ上右擊,并從context菜單上選擇安裝即可。
內(nèi)存
基于線程的結(jié)構(gòu)的確有一些內(nèi)存限制,因?yàn)閱蝹€(gè)進(jìn)程由線程組成,而進(jìn)程的地址空間是受限的,因此很少有空間是機(jī)動(dòng)的。因?yàn)閃indows 2000仍然是32為操作系統(tǒng),單個(gè)進(jìn)程地址空間被限制在4GB內(nèi),其中一半被操作系統(tǒng)保留,這2GB被OS保留的系統(tǒng)內(nèi)存也被視為系統(tǒng)地址空間,他包括OS內(nèi)核編碼、硬件抽象層編碼(HAL)和需要管理進(jìn)程和OS交互的不同的其它結(jié)構(gòu),這2GB的系統(tǒng)地址空間是禁止應(yīng)用程序進(jìn)程訪問(wèn)的。因此,Windows 2000標(biāo)準(zhǔn)服務(wù)器單個(gè)應(yīng)用程序進(jìn)程可使用內(nèi)存空間共2GB。在Windows 2000高級(jí)服務(wù)器啟動(dòng)文件boot.ini中有/3GB開(kāi)關(guān),改變這個(gè)比例到3GB,這項(xiàng)技術(shù)被稱(chēng)作4GB調(diào)優(yōu)(4-gigabyte tuning,或4GT),我們將針對(duì)這個(gè)問(wèn)題展開(kāi)詳細(xì)討論。
保留的內(nèi)存是分配給線程的內(nèi)存并且留作將來(lái)使用,但沒(méi)有實(shí)際使用的內(nèi)存。因?yàn)闆](méi)有實(shí)際使用,因此它對(duì)其它進(jìn)程仍然有效。但是,因?yàn)樗呀?jīng)被分配,它仍然由對(duì)擁有線程的進(jìn)程的總的內(nèi)存限制產(chǎn)生,因此,保留內(nèi)存的計(jì)算針對(duì)2GB或3GB的限制,并且進(jìn)程保留的和使用的內(nèi)存的總和不能超過(guò)這個(gè)限制。
除了系統(tǒng)中安裝的物理內(nèi)存之外,Windows 2000還使用虛擬內(nèi)存。這實(shí)際上是駐留在硬盤(pán)上的內(nèi)存。但是Windows 2000使得它對(duì)應(yīng)用程序來(lái)說(shuō),就像是安裝在機(jī)器上內(nèi)存一樣。當(dāng)某個(gè)應(yīng)用程序塊要求訪問(wèn)那個(gè)內(nèi)存時(shí),Windows 2000就把另外的內(nèi)存塊復(fù)制到磁盤(pán)上,而把所要求的內(nèi)存放到物理內(nèi)存中,這些內(nèi)存塊的大小是4KB。也就是說(shuō),每次應(yīng)用程序提出對(duì)內(nèi)存的要求時(shí),內(nèi)存就被分配在4KB的頁(yè)面內(nèi)。在磁盤(pán)上模擬內(nèi)存的文件叫做頁(yè)面調(diào)度文件。Virtual Memory Manager(VMM虛擬內(nèi)存管理器)是操作系統(tǒng)管理機(jī)器上的虛擬內(nèi)存組件。所有的內(nèi)存訪問(wèn)都通過(guò)VMM。這意味著每當(dāng)操作系統(tǒng)需要進(jìn)行內(nèi)存調(diào)頁(yè)時(shí),就要提出VMM請(qǐng)求。
內(nèi)存調(diào)優(yōu)方法:
(一)使用超過(guò)4GB的內(nèi)存
另外,有辦法允許為單個(gè)進(jìn)程或應(yīng)用分配超過(guò)32位地址空間的內(nèi)存,為實(shí)現(xiàn)這一點(diǎn),Windows 2000使用物理地址擴(kuò)展(physical address extensions ,或PAE),PAE本質(zhì)上把地址空間從32位增加到36位,但是必須有Pentium Pro或更新的處理器才能享受這個(gè)優(yōu)勢(shì)。在Windows NT 4.0下,Intel提供PSE36驅(qū)動(dòng)程序享受全部36位地址空間的優(yōu)勢(shì),但是在Windows 2000 Advanced Server中36位地址空間的支持已經(jīng)建立在操作系統(tǒng)中,然而,應(yīng)用程序必須使用地址窗口擴(kuò)展(Address Windowing Extensions ,或AWE)API寫(xiě)成,Oracle9i 發(fā)行號(hào)1(Release 1)不支持AWE,所有的Oracle 8i發(fā)行號(hào)(releases 8.1.5–8.1.7)都支持AWE。Oracle在9i發(fā)行號(hào)2(Release 2)中實(shí)現(xiàn)了對(duì)AWE的支持。
?。ǘ〢WE和Windows 2000
AWE允許你使用系統(tǒng)中任何附加的超過(guò)4GB的內(nèi)存,為了體現(xiàn)這個(gè)優(yōu)勢(shì),你必須有超過(guò)4GB的內(nèi)存,必須有Pentium Pro或更新的處理器,必須運(yùn)行Windows 2000高級(jí)服務(wù)器或Windows 2000數(shù)據(jù)中心服務(wù)器,不需要特殊的驅(qū)動(dòng)程序,因?yàn)閃indows 2000已經(jīng)支持AWE。
為了利用這項(xiàng)優(yōu)勢(shì),必須在啟動(dòng)Windows 2000機(jī)器時(shí)在boot.ini文件中使用/PAE開(kāi)關(guān),你必須確保運(yùn)行Oracle服務(wù)的帳戶有Lock Pages in Memory權(quán)限。給運(yùn)行Oracle服務(wù)的帳戶增加Lock Pages in Memory權(quán)限后,要重新啟動(dòng)OracleService 服務(wù)。
(三)AWE和Oracle
可以確定,Oracle8i所有發(fā)行號(hào)版本和Oracle9i發(fā)行號(hào)2只允許你為數(shù)據(jù)庫(kù)塊緩沖區(qū)配置超過(guò)4GB限制的內(nèi)存空間,因此,要為用戶連接釋放標(biāo)準(zhǔn)進(jìn)程地址空間的內(nèi)存(低于3GB界限的內(nèi)存)、PGA內(nèi)存和組成SGA的不同內(nèi)存緩沖池。
在初始化參數(shù)文件init.ora中要設(shè)置參數(shù)USE_INDIRECT_DATA_BUFFERS=TRUE,沒(méi)有這個(gè)參數(shù),Oracle不能尋址到4GB以上的地址空間。接下來(lái)要設(shè)置決定內(nèi)存使用總量的緩沖池大小,設(shè)定DB_BLOCK_SIZE和DB_BLOCK_BUFFERS兩個(gè)參數(shù)。
在Oracle9i發(fā)行號(hào)2中,參數(shù)DB_BLOCK_BUFFERS被參數(shù)DB_CACHE_SIZE所代替,這樣就改變了原來(lái)指定緩沖區(qū)塊數(shù)到指定緩沖區(qū)字節(jié)數(shù),同樣,也解釋了在Oracle9i發(fā)行號(hào)2的一個(gè)數(shù)據(jù)庫(kù)中支持多個(gè)數(shù)據(jù)庫(kù)塊大小。無(wú)論用哪種辦法,如果你設(shè)定參數(shù)USE_INDIRECT_BUFFERS=TRUE,你將只能定義和使用單個(gè)數(shù)據(jù)庫(kù)塊大小和塊緩沖區(qū)(就象在9i以前的發(fā)行號(hào)中),因此,如果缺省數(shù)據(jù)庫(kù)塊大小是4k、8k或其它,而設(shè)置DB_2k_CACHE_SIZE是不允許的。
接下來(lái)需要在注冊(cè)表中為ORACLE_HOME設(shè)置合適的AWE_WINDOW_MEMORY參數(shù)值,也就是在HKEY_LOCAL_MACHINE\ Software\Oracle\HOME0下,這個(gè)參數(shù)指定字節(jié)數(shù),如果沒(méi)有設(shè)置,缺省值是1 GB。這個(gè)參數(shù)的大小取決于你要設(shè)置多少緩沖區(qū)大小,并視為來(lái)自3GB進(jìn)程地址空間的常規(guī)內(nèi)存。以緩沖區(qū)大小為6 GB為例,設(shè)置AWE_WINDOW_MEMORY為缺省值1GB,你希望1GB 視為常規(guī)內(nèi)存,并且剩余5GB緩沖區(qū)來(lái)自4GB限制以上的地址空間。你希望更多的緩沖池盡可能保留在常規(guī)地址空間,因?yàn)樵L問(wèn)超過(guò)4GB以上的緩沖池比訪問(wèn)虛擬地址空間緩沖池要慢(盡管仍然比磁盤(pán)I/O操作快)。
?。ㄋ模┙鉀Q與AWE相關(guān)的內(nèi)存問(wèn)題
需要注意的是每個(gè)4GB界限以上的塊緩沖區(qū)需要在常規(guī)地址空間保留大約200字節(jié)的緩沖區(qū)頭,因此,在上面的例子中,我們大約有312000個(gè)緩沖區(qū)頭指向擴(kuò)展地址空間的緩沖區(qū),緩沖區(qū)頭大約占80MB常規(guī)內(nèi)存空間,如果數(shù)據(jù)庫(kù)塊很小,那么這個(gè)數(shù)量會(huì)相當(dāng)高,因此,必須確保這些緩沖區(qū)頭、AWE_WINDOW_MEMORY、和所有Oracle.exe進(jìn)程的內(nèi)存需求,包括編碼、SGA其它組件、PGA內(nèi)存和每個(gè)用戶連接棧都適合Oracle.exe進(jìn)程的常規(guī)3GB虛擬地址空間。
確認(rèn)你有足夠的物理內(nèi)存處理超過(guò)AWE_WINDOW_MEMORY之外的DB_BLOCK_BUFFERS,在我們的例子中定義緩沖池大小為6GB,1GB來(lái)自常規(guī)地址空間,剩余5GB來(lái)自4GB以外的對(duì)整個(gè)進(jìn)程有效的系統(tǒng)和進(jìn)程地址空間,因此,這個(gè)例子只能工作在至少有9GB內(nèi)存的機(jī)器上,你還應(yīng)該為其它進(jìn)程保留一些空間,只有一個(gè)進(jìn)程可以在某一時(shí)刻訪問(wèn)附加的內(nèi)存。
象前面所說(shuō)的那樣,/PAE開(kāi)關(guān)只用于系統(tǒng)有超過(guò)4GB物理內(nèi)存的時(shí)候,但如果系統(tǒng)內(nèi)存少于4GB時(shí),也可模仿這項(xiàng)功能。在boot.ini文件中設(shè)置MAXMEM參數(shù)的值,如下面例子,設(shè)為2GB,意味著任何2GB以上的內(nèi)存都將保留為AWE內(nèi)存。
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /fastdetect /PAE /MAXMEM:2048
為一個(gè)數(shù)據(jù)庫(kù)使用附加的多個(gè)進(jìn)程
真正的應(yīng)用集群(Real Applications Clusters,RAC)提供有多個(gè)實(shí)例運(yùn)行和訪問(wèn)同一數(shù)據(jù)的能力。通常,這用于有兩個(gè)或多個(gè)節(jié)點(diǎn)的項(xiàng)目,一個(gè)實(shí)例運(yùn)行在每個(gè)節(jié)點(diǎn)。無(wú)論如何,它支持在Oracle9i有兩個(gè)實(shí)例運(yùn)行在一個(gè)節(jié)點(diǎn)訪問(wèn)同一個(gè)數(shù)據(jù)庫(kù)。這能克服每個(gè)進(jìn)程的內(nèi)存限制,又提供某些其它的利益,如應(yīng)用程序失敗檢測(cè)。
轉(zhuǎn)載請(qǐng)說(shuō)明出處:六百號(hào)技術(shù) - SEO優(yōu)化,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)絡(luò)編程,軟件技巧,網(wǎng)絡(luò)知識(shí),系統(tǒng)技術(shù) ? Windows 2000下優(yōu)化Oracle9i性能
標(biāo)簽: