在Windows 2000下最佳化Oracle9i效能

來源:互聯網
上載者:User
一、最佳化磁碟配置

Oracle是一個磁碟I/O強烈的應用,要確保你恰當地配置磁碟和檔案系統:

1、在磁碟上建立資料檔案前首先運行磁碟磁碟重組程式
為了安全地整理磁碟片段,需關閉開啟資料檔案的執行個體,並且停止服務。如果你有足夠的連續磁碟空間建立資料檔案,那麼你就很容易避免資料檔案產生片段。

2、不要使用磁碟壓縮
Oracle資料檔案不支援磁碟壓縮。

3、不要使用磁碟加密
加密象磁碟壓縮一樣增加了一個處理層降低磁碟讀寫速度。如果你擔心自己的資料可能泄密,就使用dbms_obfuscation包和label security選擇性地加密資料的敏感部分。

4、不要使用超過70%的磁碟空間
剩餘的磁碟空間存放系統臨時資料和作為磁碟磁碟重組程式存放中間資料。

5、使用RAID
選擇硬體RAID超過軟體RAID;帶有硬體RAID控制器;記錄檔不要放在RAID 5卷上,因為RAID 5讀效能高而寫效能差。

6、把記錄檔和歸檔日誌放在與控制檔案和資料檔案分離的磁碟控制系統。
分離頁面分頁檔到多個磁碟物理卷,跨越至少兩個磁碟建立兩個分頁檔。你可以建立四個分頁檔並在效能上受益,確保所有分頁檔的大小之和至少是實體記憶體的兩倍。

二、最佳化CPU使用和配置

1、取消螢幕保護裝置
螢幕保護裝置吸取大量的CPU資源而且提供的是對資料庫伺服器毫無意義的用處,特別要禁止3GL螢幕保護裝置,如果你必須使用螢幕保護裝置就用“空螢幕”減少CPU使用。

2、把系統配置為應用伺服器
運行控制台的“系統”,在進階選項卡中設定“效能選項”到“背景程式”,這提供優先權給應用程式,象類似Oracle的服務,反對使用者在圖形化使用者介面啟動一個笨拙的程式。

3、監視系統中消耗中斷的硬體
消耗CPU中斷和時間的硬體應該避免使用。通常這樣的硬體是便宜的因為它把工作載入CPU,而CPU要處理外圍的進階效能的硬體,通常需要注意:

1>、支援匯流排控制的網卡
2>、支援DMA而不支援PIO的磁碟控制卡
使用效能監控器跟蹤處理器對象的%Interrupt Time 計數器數值,和這個計數器的基準和標準,然後監視問題。
3>、有利避免中斷的方式是使用硬體RAID控制器代替Windows 2000支援的軟體RAID。

4、保持最小的安全審計記錄
在專用伺服器上運行Oracle
Oracle是記憶體消耗大戶,不要在執行下列功能的系統上運行Oracle資料庫:
1>、主域或備份網域控制站(Windows 2000下都稱網域控制站)
2>、檔案伺服器
3>、列印伺服器
4>、遠端存取伺服器
5>、路由器、代理或防火牆

5、不要使用花哨的壁紙(如果使用,要盡量減小壁紙檔案大小)

6、禁止非必須的服務

最好禁止系統裡非必須的服務,如果時而需要某些服務功能,可將啟動類型設定為“手動”,要做到這一點首先同網路系統管理員驗證實際的服務需求:
1>、如果你的系統不需要印表機,通常停止這個服務並設定為手動;
2>、停止License Logging Service服務除非你對它有特殊要求;
3>、不應該使用DHCP服務,並禁止它;
4>、不要自動啟動你不需要的程式;

7、檢查菜單“開始/程式/啟動”裡的內容,刪除不需要的程式。

三、最佳化網路設定

網路設定是效能調整的一項很重要的內容,而且很容易隱藏效能瓶頸。

1、配置網卡使用最快速度和有效模式
這針對自動檢測,大多數預設安裝是NIC,如果這是可選的就盡量調整為“全雙工系統”和最大化線速度。

2、刪除不需要的網路通訊協定

只保留TCP/IP協議。

3、最佳化網路通訊協定綁定順序

在每個網卡上設定主協議,典型地是TCP/IP,到協議列表的頂端。

4、為Oracle禁止或最佳化檔案分享權限設定

理想地應該禁止檔案分享權限設定功能來最小化安全泄露和網路交通,但如果你需要使用檔案和列印共用,那麼就配置系統中每個網卡的“串連屬性”,設定“最大化網路應用程式資料輸送量”

四、記憶體調優

記憶體最佳化是Windows平台的關鍵設定,首先瞭解一下Windows 2000平台的Oracle結構:

基於線程的結構

Windows2000是基於線程的結構,相反,Unix作業系統是基於進程的結構。這意味著Windows中更多的應用,包括Oracle在內,是以帶有多個線程的單個進程的形式執行,這種基於線程的結構的確給Window2000帶來優勢——更容易共用記憶體。記憶體空間為每個進程分配,進程間共用記憶體很笨拙,要使用附加編碼,線程是進程的子集,使用比進程少得多的記憶體。特定進程的所有線程共用同樣的進程記憶體空間,同一進程的線程間共用記憶體比不同進程共用記憶體要快,這給基於線程的結構很大優勢,更有效。

在伺服器上啟動並執行每個應用程式都有一個,而且只有一個進程。進程是應用程式的載體,是用來容納執行應用程式實際工作的線程的。從使用者角度看,進程是不用任何專門工具就可以看到的組件。進程對其他應用程式組件的作用就像容器一樣。它持有虛擬儲存空間、資料、系統資源和應用程式設定。雖然線程可以分配、重新分配和釋放記憶體,但是進程接受初始的記憶體配置,並將它分配到請求記憶體的所有線程。線程是包含在進程內共用所有進程資源的單個執行路徑。它還包含堆棧(儲存在記憶體中的變數和其他資料)、CPU寄存器的狀態資訊(所以,線程可以恢複它的環境)、和在系統發送器的執行列表中的一個登入項。每個線程規定了完成任務應用程式需要作的某種工作。

使用Task Manager的主要問題是看不到任何線程。Task Manager被設計成從進程層將應用程式作為整體看待。當然還可以使用效能監控器來監視Windows下的Oracle記憶體使用量。

從“開始/程式/管理工具”選擇“效能”啟動“系統監視器”。注意,“效能”包括兩個MMC外掛程式:“系統監視器”和“效能日誌和變更”。這時,需要一些被監視的計數器(計數器是一些效能指標,用於對 Windows 2000的特殊對象進行統計,例如統計特定線程所要求的處理器時間)。單擊“添加”按鈕(在圖中看起來象一個加號),將看到“添加計數器”對話方塊。首先需要選擇想監視的“效能”對象。在包含“進程”對象和“線程”對象的“效能”下拉式清單中選擇。

進程觀察器(Process Viewer)是比較容易檢查線程和進程的方法之一。可以在 Windows 2000 Support Tools 或Windows 2000 Resource Kit內找到一些工具。Windows 2000 Support Tools是Windows 2000的一部分,但是並不自動安裝。支援安裝的Windows Installer檔案在ÍROM%SUPPORTTOOLS目錄下。只要在2000RKST.MSJ上右擊,並從context菜單上選擇安裝即可。

記憶體

基於線程的結構的確有一些記憶體限制,因為單個進程由線程組成,而進程的地址空間是受限的,因此很少有空間是機動的。因為Windows 2000仍然是32為作業系統,單個進程地址空間被限制在4GB內,其中一半被作業系統保留,這2GB被OS保留的系統記憶體也被視為系統地址空間,他包括OS核心編碼、硬體抽象層編碼(HAL)和需要管理進程和OS互動的不同的其它結構,這2GB的系統地址空間是禁止應用程式進程訪問的。因此,Windows 2000標準伺服器單個應用程式進程可使用記憶體空間共2GB。在Windows 2000進階伺服器開機檔案boot.ini中有/3GB開關,改變這個比例到3GB,這項技術被稱作4GB調優(4-gigabyte tuning,或4GT),我們將針對這個問題展開詳細討論。

保留的記憶體是分配給線程的記憶體並且留作將來使用,但沒有實際使用的記憶體。因為沒有實際使用,因此它對其它進程仍然有效。但是,因為它已經被分配,它仍然由對擁有線程的進程的總的記憶體限制產生,因此,保留記憶體的計算針對2GB或3GB的限制,並且進程保留的和使用的記憶體的總和不能超過這個限制。

除了系統中安裝的實體記憶體之外,Windows 2000還使用虛擬記憶體。這實際上是駐留在硬碟上的記憶體。但是Windows 2000使得它對應用程式來說,就像是安裝在機器上記憶體一樣。當某個應用程式塊要求訪問那個記憶體時,Windows 2000就把另外的記憶體塊複製到磁碟上,而把所要求的記憶體放到實體記憶體中,這些記憶體塊的大小是4KB。也就是說,每次應用程式提出對記憶體的要求時,記憶體就被分配在4KB的頁面內。在磁碟上類比記憶體的檔案叫做頁面調度檔案。Virtual Memory Manager(VMM虛擬記憶體管理器)是作業系統管理機器上的虛擬記憶體組件。所有的記憶體訪問都通過VMM。這意味著每當作業系統需要進行記憶體調頁時,就要提出VMM請求。

記憶體調優方法:

(一)使用超過4GB的記憶體

另外,有辦法允許為單個進程或應用程式指派超過32位地址空間的記憶體,為實現這一點,Windows 2000使用實體位址延伸(physical address extensions ,或PAE),PAE本質上把地址空間從32位增加到36位,但是必須有Pentium Pro或更新的處理器才能享受這個優勢。在Windows NT 4.0下,Intel提供PSE36驅動程式享受全部36位地址空間的優勢,但是在Windows 2000 Advanced Server中36位地址空間的支援已經建立在作業系統中,然而,應用程式必須使用地址視窗擴充(Address Windowing Extensions ,或AWE)API寫成,Oracle9i 發行號1(Release 1)不支援AWE,所有的Oracle 8i發行號(releases 8.1.5–8.1.7)都支援AWE。Oracle在9i發行號2(Release 2)中實現了對AWE的支援。

(二)AWE和Windows 2000

AWE允許你使用系統中任何附加的超過4GB的記憶體,為了體現這個優勢,你必須有超過4GB的記憶體,必須有Pentium Pro或更新的處理器,必須運行Windows 2000進階伺服器或Windows 2000資料中心伺服器,不需要特殊的驅動程式,因為Windows 2000已經支援AWE。

為了利用這項優勢,必須在啟動Windows 2000機器時在boot.ini檔案中使用/PAE開關,你必須確保運行Oracle服務的帳戶有Lock Pages in Memory許可權。給運行Oracle服務的帳戶增加Lock Pages in Memory許可權後,要重新啟動OracleService 服務。

(三)AWE和Oracle

可以確定,Oracle8i所有發行號版本和Oracle9i發行號2隻允許你為資料庫塊緩衝區配置超過4GB限制的記憶體空間,因此,要為使用者串連釋放標準進程地址空間的記憶體(低於3GB界限的記憶體)、PGA記憶體和組成SGA的不同記憶體緩衝池。

在初始化參數檔案init.ora中要設定參數USE_INDIRECT_DATA_BUFFERS=TRUE,沒有這個參數,Oracle不能定址到4GB以上的地址空間。接下來要設定決定記憶體使用量總量的緩衝池大小,設定DB_BLOCK_SIZE和DB_BLOCK_BUFFERS兩個參數。

在Oracle9i發行號2中,參數DB_BLOCK_BUFFERS被參數DB_CACHE_SIZE所代替,這樣就改變了原來指定緩衝區塊數到指定緩衝區位元組數,同樣,也解釋了在Oracle9i發行號2的一個資料庫中支援多個資料庫塊大小。無論用哪種辦法,如果你設定參數USE_INDIRECT_BUFFERS=TRUE,你將只能定義和使用單個資料庫塊大小和塊緩衝區(就象在9i以前的發行號中),因此,如果預設資料庫塊大小是4k、8k或其它,而設定DB_2k_CACHE_SIZE是不允許的。

接下來需要在註冊表中為ORACLE_HOME設定合適的AWE_WINDOW_MEMORY參數值,也就是在HKEY_LOCAL_MACHINE SoftwareOracleHOME0下,這個參數指定位元組數,如果沒有設定,預設值是1 GB。這個參數的大小取決於你要設定多少緩衝區大小,並視為來自3GB進程地址空間的常規記憶體。以緩衝區大小為6 GB為例,設定AWE_WINDOW_MEMORY為預設值1GB,你希望1GB 視為常規記憶體,並且剩餘5GB緩衝區來自4GB限制以上的地址空間。你希望更多的緩衝池儘可能保留在常規地址空間,因為訪問超過4GB以上的緩衝池比訪問虛擬位址空間緩衝池要慢(儘管仍然比磁碟I/O操作快)。

(四)解決與AWE相關的記憶體問題

需要注意的是每個4GB界限以上的塊緩衝區需要在常規地址空間保留大約200位元組的緩衝區頭,因此,在上面的例子中,我們大約有312000個緩衝區頭指向擴充地址空間的緩衝區,緩衝區頭大約佔80MB常規記憶體空間,如果資料庫塊很小,那麼這個數量會相當高,因此,必須確保這些緩衝區頭、AWE_WINDOW_MEMORY、和所有Oracle.exe進程的記憶體需求,包括編碼、SGA其它組件、PGA記憶體和每個使用者串連棧都適合Oracle.exe進程的常規3GB虛擬位址空間。

確認你有足夠的實體記憶體處理超過AWE_WINDOW_MEMORY之外的DB_BLOCK_BUFFERS,在我們的例子中定義緩衝池大小為6GB,1GB來自常規地址空間,剩餘5GB來自4GB以外的對整個進程有效系統和進程地址空間,因此,這個例子只能工作在至少有9GB記憶體的機器上,你還應該為其它進程保留一些空間,只有一個進程可以在某一時刻訪問附加的記憶體。

象前面所說的那樣,/PAE開關只用於系統有超過4GB實體記憶體的時候,但如果系統記憶體少於4GB時,也可模仿這項功能。在boot.ini檔案中設定MAXMEM參數的值,如下面例子,設為2GB,意味著任何2GB以上的記憶體都將保留為AWE記憶體。

multi(0)disk(0)rdisk(0)partition(1)WINNT="Microsoft Windows 2000 Advanced

Server" /fastdetect /PAE /MAXMEM:2048

為一個資料庫使用附加的多個進程

真正的應用叢集(Real Applications Clusters,RAC)提供有多個執行個體運行和訪問同一資料的能力。通常,這用於有兩個或多個節點的項目,一個執行個體運行在每個節點。無論如何,它支援在Oracle9i有兩個執行個體運行在一個節點訪問同一個資料庫。這能克服每個進程的記憶體限制,又提供某些其它的利益,如應用程式失敗檢測。

轉自:http://oracle.itpub.net/
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.