Unix環境下的Oracle調優原則
首先通過作業系統的一些工具檢查系統的狀態,比如CPU、記憶體、交換、磁碟的利用率,根據經驗或與系統正常時的狀態相比對,有時系統表面上看起來看空閒這也可能不是一個正常的狀態,因為cpu可能正等待IO的完成。除此之外我們還應觀注那些佔用系統資源(cpu、記憶體)的程式。
|
其中%usr是使用者程式使用cpu的百分比,%sys是系統程式使用cpu的百分比,%wio 是等待IO完成使用cpu的百分比, %idle是空閒的百分比。如果%wio列值很大,說明IO存在問題,需要進行優化,一般情況下認為%wio大於35IO就存在問題。 如果%idle值很低,說明cpu已經滿負荷。
當你的系統存在IO的問題,可以從以下幾個方面解決:
1 聯絡相應的作業系統的技術支援對這方面進行優化,比如hp-ux在劃定卷組時的條帶化等方面。
2 查詢Oracle中不合理的sql語句,對其進行優化
3 對Oracle中訪問量頻繁的表除合理建索引外,再就是把這些表分表空間存放以免訪問上產生熱點,再有就是對錶合理分割槽。
關注一下記憶體
常用的工具便是vmstat,對於hp-unix來說可以用glance,Aix來說可以用topas,當你發現vmstat中pi列非零,memory中的free列的值很小,glance,topas中記憶體的利用率多於80%時,這時說明你的記憶體方面應該調節一下了,方法大體有以下幾項。
1 劃給Oracle使用的記憶體不要超過系統記憶體的1/2,一般保在系統記憶體的40%為益。
2 為系統增加記憶體
3 如果你的連線特別多,可以使用MTS的方式
4 打全補丁,防止記憶體漏洞
如何找到點用系用資源特別大的Oracle的session及其執行的語句。
Hp-unix可以用glance,top
IBM AIX可以用topas
些外可以使用ps的命令。
通過這些程式我們可以找到點用系統資源特別大的這些程式的程式號,我們就可以通過以下的sql語句發現這個pid正在執行哪個sql,這個sql最好在pl/sql developer,toad等軟體中執行,不需要進行格式化, 把<>中的spid換成你的spid就可以了。
使用top檢視執行時間最長state為run程式的pid,使用如下的語句檢視pid在做什麼
SELECT a.sql_text |
檢視到如果是有全表掃描的語句就要進行優化。
查詢前十條效能差的sql.
SELECT * FROM |
指令碼說明:檢視佔io較大的正在執行的session
SELECT se.sid, se.serial#, pr.SPID, se.username, se.status, |
對檢索出的結果的幾點說明:
1、我是按每個正在等待的session已經發生的物理讀排的序,因為它與實際的IO相關。
2、你可以看一下這些等待的程式都在忙什麼,語句是否合理?
Select sql_address from v$session where sid=; |
執行以上兩個語句便可以得到這個session的語句。
你也以用alter system kill session 'sid,serial#';把這個session殺掉。
3、應觀注一下event這列,這是我們調優的關鍵一列,下面對常出現的event做以簡要的說明:
a、buffer busy waits,free buffer waits這兩個引數所標識是dbwr是否夠用的問題,與IO很大相關的,當v$session_wait中的free buffer wait的條目很小或沒有的時侯,說明你的系統的dbwr程式決對夠用,不用調整;free buffer wait的條目很多,你的系統感覺起來一定很慢,這時說明你的dbwr已經不夠用了,它產生的wio已經成為你的資料庫效能的瓶頸,這時的解決辦法如下:
a.1增加寫程式,同時要調整db_block_lru_latches引數
示例:修改或新增如下兩個引數
db_writer_processes=4 |
a.2開非同步IO,IBM這方面簡單得多,hp則麻煩一些,可以與Hp工程師聯絡。
b、db file sequential read,指的是順序讀,即全表掃描,這也是我們應該儘量減少的部分,解決方法就是使用索引、sql調優,同時可以增大db_file_multiblock_read_count這個引數。
c、db file scattered read,這個引數指的是通過索引來讀取,同樣可以通過增加db_file_multiblock_read_count這個引數來提高效能。
d、latch free,與栓相關的了,需要專門調節。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13024285/viewspace-629019/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Unix環境下的Oracle調優Oracle
- Oracle效能調優原則Oracle
- DBA 應遵循的 Oracle 調優原則Oracle
- Unix環境和Windows環境下Oracle引數檔案位置:WindowsOracle
- 在UNIX環境下批次殺掉ORACLE程式Oracle
- unix下環境變數 .變數
- 淺談AIX環境下的Java效能調優AIJava
- 企業環境下MySQL5.5調優MySql
- Oracle調優---調整優化器行為的一般性原則Oracle優化
- UNIX下的PHP環境配置,+apache (轉)PHPApache
- Unix原則-KISS
- HP-UNIX下RAC環境變數設定錯誤修正一則變數
- windows下目錄傳送到unix環境Windows
- Python 環境下的自動化機器學習超引數調優Python機器學習
- 【解除安裝】在LINUX/UNIX環境下解除安裝Oracle的OLAP元件LinuxOracle元件
- Linux/Unix環境下的make命令詳解(轉)Linux
- Unix的環境變數(轉)變數
- Unix的環境變數 (轉)變數
- linux線上環境jetty調優方案LinuxJetty
- oracle login.sql登入時的環境初始化(unix/linux環境)OracleSQLLinux
- UNDO表空間自動調優原則
- Oracle資料庫9i在AIX環境下的效能調整Oracle資料庫AI
- Oracle RAC 環境下的連線管理Oracle
- ORACLE RAC 環境下修改IPOracle
- Unix哲學17條原則的新感悟
- 設定linux/unix的shell環境Linux
- unix系統環境檢查
- oracle&linux環境vm相關的調整OracleLinux
- Windows環境下的Nginx環境搭建WindowsNginx
- Oracle VM:虛擬環境下的Oracle VC認證Oracle
- WINDOWS環境下ORACLE啟動的問題WindowsOracle
- 掌握Linux,OS X,Unix的Shell環境Linux
- Unix環境中配置JSP的方法(轉)JS
- UNIX再學習 -- 環境變數變數
- 《UNIX環境高階程式設計》apue原始碼Ubuntu下的編譯程式設計原始碼Ubuntu編譯
- 神通資料庫測試環境調優過程資料庫
- unix/linux環境中Oracle 10G RAC OFF和RAC ONLinuxOracle 10g
- Oracle ADG環境下的RMAN備份策略Oracle