程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 優化調整Oracle 8i數據庫

優化調整Oracle 8i數據庫

編輯:關於MYSQL數據庫
Oracle 8i數據庫服務器是高度可優化的軟件產品,經常性的調整可以優化系統的性能,防止出現數據瓶頸。我們通過調整數據庫系統,可以使它達到最佳性能以滿足用戶的需要。

下面,筆者將介紹優化和調整Sun SPARC Solaris系統平台上的Oracle 8i數據庫服務器的一些相關命令和方法。

Solaris性能監控命令

Solaris提供了性能監控命令,用於監控數據庫性能和決定數據庫的需求。除了為Oracle進程提供統計外,它們還為CPU提供使用統計,為整個系統提供中斷、交換、分頁和上下文轉換功能。監控命令包括:

1.vmstat

vmstat命令報告Solaris上的進程、虛擬內存、磁盤、分頁和CPU的活動情況。下面命令將顯示系統每5秒鐘做的事的概要:

% vmstat 5

2.sar

ar命令用於監控交換、分頁、磁盤和CPU活動。下面命令用於每10秒顯示10次分頁活動的概要:

#8194;$ sar -p 10 10

3.iOStat

iOStat命令報告終端和磁盤的活動。該報告顯示哪些磁盤是忙的(該信息在平衡I/O負載時有用)。下面命令用於每5秒顯示5次終端和磁盤活動:

#8194;$ iOStat 5 5

4.swap

wap命令報告關於交換空間使用的信息。交換空間的不足可以導致系統懸掛,減慢響應時間。

5.mpstat

mpstat命令報告每個處理器的統計。

調整內存管理

1.分配足夠的交換空間

內存交換(swapping)可以造成很大的內存開銷,應該將它最小化。在Solaris上使用sar -w或vmstat -S命令來檢查交換。若系統在交換,且需要節省內存,則應采用以下措施:

避免運行不必要的系統daemon進程或應用程序進程;

減少數據庫緩沖區的數量,以釋放一些內存;

減少UNIX文件緩沖區的數量(特別是在使用原始設備時)。

在Solaris上用swap -l命令決定當前正在使用多少交換空間。使用swap -a命令向系統中增加交換區。用系統RAM兩到四倍的交換空間啟動數據庫。若准備使用Oracle Developer、Oracle Applications或Oracle InterOffice,則使用更高的值。監控交換空間的使用,在必要時增加它。

2.控制分頁

內存分頁(paging)可能沒有交換那樣問題嚴重,因為為了運行,整個應用程序不必全部放在內存中。少量的分頁不可能顯著地影響系統的性能。為了檢測過多的分頁,在快速響應或空閒期間運行測量,並與響應遲緩時的測量進行比較。使用vmstat或sar -p監控分頁。

若系統有過多的頁面活動,則需考慮以下解決辦法:

安裝更多的內存;

將一些工作移到另一系統中;

配置系統核心使用更少的內存;

保持SGA在單個共享內存段中。

沒有足夠的共享內存,將不能夠啟動數據庫。這時,我們可以重新配置UNIX核心,以增加共享內存。

調整磁盤I/O

I/O瓶頸是最容易識別的性能問題。跨所有可用的磁盤均勻地平衡I/O,可以減少磁盤存取的時間。對於較小的數據庫和不使用並行查詢選項的那些數據庫,要確保不同的數據文件和表空間跨可用的磁盤分布。

1.調整DBWR,增加寫帶寬

Oracle提供以下方法以防止DBWR(數據庫寫進程)活動成為瓶頸:

使用異步I/O 異步I/O允許進程繼續處理下一個操作,而不必等待在發出寫後,最小化了空閒時間,因而改善了系統性能。Solaris支持原始設備和文件系統數據文件的異步I/O。

使用I/O從屬 I/O從屬(slave)是專用的進程,其惟一功能是執行I/O。它們代替Oracle 7的多個DBWR特性(實際上它們是多個DRWR的概括,可以由其它進程分布)。不管異步I/O是否可用,它們都可以操作。若設置的話,它們被從LARGE_POOL_SIZE分配,否則從共享內存緩沖區分配。

初始化參數控制了I/O從屬的行為,其中DISK_ASYNCH_IO和TAPE_ASYNCH_IO允許分別為磁盤和磁帶設備關閉異步I/O(因為每個進程類型的I/O從屬缺省為0,除非明確設置,否則沒有I/O從屬被發布)。

若DISK_ASYNCH_IO或TAPE_ASYNCH_IO無效,則DBWR_IO_SLAVES應該設置大於0,否則DBWR將成為一個瓶頸。在這種情況下,Solaris上DBWR_IO_SLAVES的最佳值為4,而在LGWR_IO_SLAVES的情況下,發布的從屬不應該超過9個。

DB_WRITER_PROCESSES代替Oracle 7的參數DB_WRITERS,指定某實例的數據庫寫進程的初始數量。若使用DBWR_IO_SLAVES,則只有一個數據庫寫進程被使用,而不管DB_WRITER_PROCESSES的設置。



2.使用iOSTAT查找大磁盤請求隊列

請求隊列顯示特定磁盤設備上等待服務的I/O請求有多長。由大量的磁盤I/O或由平均查找時間I/O引起請求隊列。磁盤請求隊列應該為0或接近於0。

3.選擇合適的文件系統類型

Sun SPARC Solaris允許選擇文件系統。文件系統有不同特性,它們用於存取數據的技術對數據庫性能有實質性的影響。文件系統通常包括:

.s5:UNIX系統V文件系統;

.ufs:UNIX文件系統(由BSD UNIX派生);

.vxfs:Veritas文件系統;

.原始設備:沒有文件系統。

通常沒有事實證明文件系統與文件系統是相配的,甚至不同的ufs文件系統也難以比較(因為執行不同),盡管ufs通常是高性能的選擇,但根據選擇文件系統的不同,性能差別變化也很大。

監控磁盤性能

使用sar -b和sar -u可以監控磁盤性能。

ar -b對磁盤性能的重要性如下:

(1)bread/s、bwrit/s:塊讀和塊寫,它們對文件系統而言是非常重要的。

(2)pread/s、pwrit/s:分區讀和分區寫,它們對原始分區數據庫系統是非常重要的。

Oracle塊大小應該匹配磁盤塊大小或是磁盤塊大小的倍數。若可能的話,在數據庫文件使用文件系統前在分區上做文件系統檢查;然後制作一個新的文件系統,確保它是清潔的和不破碎的。盡可能地均勻分布磁盤I/O,將數據庫文件與日志文件分開。

調整CPU的使用

1.在同一優先權上保持所有Oracle用戶和進程

在Oracle中,所有用戶和後台進程操作在同一優先級上,修改優先權對競爭和響應時間有意想不到的影響。

例如,若LGWR(日志寫進程)獲得低優先權,則它不能充分地執行,LGWR將成為一個瓶頸;另一方面,若LGWR有高的優先權,用戶進程可能要忍受較壞的響應時間。

2.在多處理器系統上使用處理器親和力/捆綁

在多處理器環境中,使用處理器親和力/捆綁(affinity/binding,若它在系統中可用)。處理器捆綁禁止某進程從一個CPU移動到另一個,允許CPU高速緩存中的信息被更好地利用,而且可以捆綁服務器進程,從而充分利用高速緩存(因為它總是活動的,允許後台進程在CPU間流動)。

3.為Export(導出)/Import(導入)和SQLLoader使用單任務鏈接

若要在用戶和Oracle 8i之間傳輸大量的數據(如使用Export/Import),使用單任務結構是非常高效的,因為作為單任務鏈接Oracle可執行程序,允許某用戶進程直接存取整個SGA。但運行單任務需要更多的內存。為了使用單任務導入、導出和SQLLoader(sqlldrst)可執行程序,我們可以調用make文件的ins_rdbms.mk(在 $Oracle_HOME/rdbms/lib目錄中)。

下面是用於實現單任務導入、導出和SQLLoader(sqlldrst)的可執行程序:

% cd  $Oracle_HOME/rdbms/lib

% make -f ins_utilitIEs.mk singletask

調整塊大小和文件


您正在看的MySQL教程是:優化調整Oracle 8i數據庫。大小

在Solaris上,Oracle塊缺省值為2KB,可以設置的實際大小為2KB的倍數,最大設置值為16KB。

最優的塊大小通常是缺省值,但隨著應用程序而變化。為了用不同的Oracle塊大小建立數據庫,在創建數據庫前在initsid.ora文件中增加下面行:

db_block_size=new_block_size

調整Solaris緩沖區高速緩存大小

為了充分利用原始設備的優點,我們需要調整Oracle 8i緩沖區高速緩存的大小和Solaris緩沖區高速緩存。

Solaris緩沖區高速緩存由操作系統提供。它在內存中保存數據的塊(在它們被從內存傳送到磁盤前,反之亦然)。

Oracle 8i緩沖區高速緩存是在內存中保存Oracle數據庫緩沖區的區域。因為Oracle 8i可以使用原始設備,它不需要使用Solaris緩沖區高速緩存。

在移動原始設備時,增加Oracle 8i緩沖區高速緩存的大小。若系統中內存的數量是有限的,則相應地減少Solaris緩沖區高速緩存的大小。

Solaris命令sar可以幫助決定哪些緩沖區高速緩存應該增加或減少:

ar -b:報告Solaris緩沖區高速緩存的活動;

ar -w:報告Solaris內存交換活動;

ar -u:報告CPU利用情況;

ar -r:報告內存利用情況;

ar -p:報告Solaris內存分頁活動。

通常在緩存命中率上升時,我們需要增加Oracle 8i緩沖區高速緩存的大小,而在交換/分頁活動變高時,我們需要減少高速緩存的大小。



我們還可以使用Oracle 8i建立的跟蹤(Trace)和警報(Alter)文件來診斷和解決運行中存在的問題。

只要我們充分利用以上命令和方法,就可以很好地優化與調整Oracle 8i數據庫了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved