最佳化調整Oracle 8i資料庫
來源:互聯網
上載者:User
導讀:
Oracle 8i資料庫伺服器是高度可最佳化的軟體產品,經常性的調整可以最佳化系統的效能,防止出現資料瓶頸。我們通過調整資料庫系統,可以使它達到最佳效能以滿足使用者的需要。下面,筆者將介紹最佳化和調整Sun SPARC Solaris系統平台上的Oracle 8i資料庫伺服器的一些相關命令和方法。
Solaris效能監控命令
Solaris提供了效能監控命令,用於監控資料庫效能和決定資料庫的需求。除了為Oracle進程提供統計外,它們還為CPU提供使用統計,為整個系統提供中斷、交換、分頁和上下文轉換功能。監控命令包括:
vmstat
vmstat命令報告Solaris上的進程、虛擬記憶體、磁碟、分頁和CPU的活動情況。下面命令將顯示系統每5秒鐘做的事的概要:
% vmstat 5
sar
sar命令用於監控交換、分頁、磁碟和CPU活動。下面命令用於每10秒顯示10次分頁活動的概要:
$ sar -p 10 10
iostat
iostat命令報告終端和磁碟的活動。該報告顯示哪些磁碟是忙的(該資訊在平衡I/O負載時有用)。下面命令用於每5秒顯示5次終端和磁碟活動:
$ iostat 5 5
swap
swap命令報告關於交換空間使用的資訊。交換空間的不足可以導致系統懸掛,減慢回應時間。
mpstat
mpstat命令報告每個處理器的統計。
調整記憶體管理
分配足夠的交換空間
記憶體交換(swapping)可以造成很大的記憶體開銷,應該將它最小化。在Solaris上使用sar -w或vmstat -S命令來檢查交換。若系統在交換,且需要節省記憶體,則應採用以下措施:
避免運行不必要的系統daemon進程或應用程式進程;減少資料庫緩衝區的數量,以釋放一些記憶體;減少UNIX檔案緩衝區的數量(特別是在使用原始裝置時)。在Solaris上用swap -l命令決定當前正在使用多少交換空間。使用swap -a命令向系統中增加交換區。用系統RAM兩到四倍的交換空間啟動資料庫。若準備使用Oracle Developer、Oracle Applications或Oracle InterOffice,則使用更高的值。監控交換空間的使用,在必要時增加它。
控制分頁
記憶體分頁(paging)可能沒有交換那樣問題嚴重,因為為了運行,整個應用程式不必全部放在記憶體中。少量的分頁不可能顯著地影響系統的效能。為了檢測過多的分頁,在快速響應或空閑期間運行測量,並與響應遲緩時的測量進行比較。使用vmstat或sar-p監控分頁。
若系統有過多的頁面活動,則需考慮以下解決辦法:
安裝更多的記憶體;
將一些工作移到另一系統中;
配置系統核心使用更少的記憶體;
保持SGA在單個共用記憶體段中。
沒有足夠的共用記憶體,將不能夠啟動資料庫。這時,我們可以重新設定UNIX核心,以增加共用記憶體。
調整磁碟I/O
I/O瓶頸是最容易識別的效能問題。跨所有可用的磁碟均勻地平衡I/O,可以減少磁碟存取的時間。對於較小的資料庫和不使用並行查詢選項的那些資料庫,要確保不同的資料檔案和資料表空間跨可用的磁碟分布。
調整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的設定。
.使用IOSTAT尋找大磁碟請求隊列請求隊列顯示特定磁碟裝置上等待服務的I/O請求有多長。由大量的磁碟I/O或由平均尋找時間I/O引起請求隊列。磁碟請求隊列應該為0或接近於0。
選擇合適的檔案系統類型 Sun SPARC Solaris允許選擇檔案系統。檔案系統有不同特性,它們用於存取資料的技術對資料庫效能有實質性的影響。檔案系統通常包括:
s5:UNIX系統V檔案系統;
ufs:UNIX檔案系統(由BSD UNIX派生);
vxfs:Veritas檔案系統;
原始裝置:沒有檔案系統。
通常沒有事實證明檔案系統與檔案系統是相配的,甚至不同的ufs檔案系統也難以比較(因為執行不同),儘管ufs通常是高效能的選擇,但根據選擇檔案系統的不同,效能差別變化也很大。
監控磁碟效能
使用sar -b和sar -u可以監控磁碟效能。
sar -b對磁碟效能的重要性如下:
bread/s、bwrit/s:塊讀和塊寫,它們對檔案系統而言是非常重要的。
pread/s、pwrit/s:分區讀和分區寫,它們對原始分區資料庫系統是非常重要的。
Oracle塊大小應該匹配磁碟塊大小或是磁碟塊大小的倍數。若可能的話,在資料庫檔案使用檔案系統前在分區上做檔案系統檢查;然後製作一個新的檔案系統,確保它是清潔的和不破碎的。儘可能地均勻分布磁碟I/O,將資料庫檔案與記錄檔分開。
調整CPU的使用
在同一優先權上保持所有Oracle使用者和進程在Oracle中,所有使用者和後台進程操作在同一優先順序上,修改優先權對競爭和回應時間有意想不到的影響。例如,若LGWR(日誌寫進程)獲得低優先權,則它不能充分地執行,LGWR將成為一個瓶頸;另一方面,若LGWR有高的優先權,使用者進程可能要忍受較壞的回應時間。
在多處理器系統上使用處理器親和力/捆綁在多處理器環境中,使用處理器親和力/捆綁(affinity/binding,若它在系統中可用)。處理器捆綁禁止某進程從一個CPU移動到另一個,允許CPU快取中的資訊被更好地利用,而且可以捆綁伺服器處理序,從而充分利用快取(因為它總是活動的,允許後台進程在CPU間流動)。
為Export(匯出)/Import(匯入)和SQL