天天看點

優化調整Oracle 8i資料庫

導讀: 

  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

本文轉自 牛海彬 51CTO部落格,原文連結:http://blog.51cto.com/newhappy/76985,如需轉載請自行聯系原作者