熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

說一說Oracle庫的Hang的特點和幾點建議

2013-11-13 12:45:38  來源: Oracle 

  有些時侯我當然指的是非常少的情況下我們會感覺我們的庫Hang加了隱號的意思是說有時真的是Hang了有一些則不是是由於性能的問題引起的我遇到過幾次Hang的情況結合著網上一些文章把可能的原因當時我們應該做的一些操作進行了如下的總結不對的地方大家可以發Mail給我:
  
  數據庫Hang時可能的現象
  最直觀的是你的大部分的業務操作比如說一個查詢都使用好長的時間或根本就返回不出結果這和簡單那種鎖表是有區別的
  
  在操作系統上用Hpunix用glanceAix用nmon及用sar做監測會出現系統空閒的假象表面看起來系統很閒實際上系統已經Hang了
  
  查v$session_wait會出現大量的latch freeenqueue free buffer waits等等待事件有時後台會出現大量的trc文件另外需要觀注一下$ORACLE_HOME/rdbms/log這個位置有一些時侯trace文件會生成到這裡
  
  Oracle庫Hang時一些有用的操作和查詢
  如果要尋求Oracle的技術支持我們需要dump一下Oracle的systemstate操作如下
  SQL>conn / as sysdba;
  SQL> alter session set events immediate trace name SYSTEMSTATE level ;
  需要等幾分鐘的時間這時在initora中所設置的user_dump_dest所標識的位置就可以找到這個trc文件一般比較大
  
  捕獲一些視圖的狀態值
  SQL>conn / as sysdba;
  SQL>set linesize
  SQL>set pagesize
  SQL>spool v_viewstxt
  SQL> SELECT * FROM v$parameter;
  SQL>SELECT class value name FROM v$sysstat;
  SQL>SELECT sid id id type lmode request FROM v$lock;
  SQL>SELECT llatch# nname hpid lgets lmisses limmediate_gets limmediate_misses lsleeps FROM v$latchname n v$latchholder h v$latch l WHERE llatch# = nlatch# AND laddr = hladdr(+);
  SQL>SELECT * FROM v$session_wait ORDER BY sid; 隔幾秒重復執行
  SQL>spool off
  
  有條件的話用statspack生成了一個Report如果你對statspach不熟悉可以參照?s=&threadid=這個鏈接
  
  產生Hang可能的幾個原因
  開歸檔的情況下歸檔位置所在的文件系統滿了這時lgwr就會等待歸檔進程的完成DML寫不了日志都處於等待的狀態
  
  在HP的系統開異步Io時沒為dba的組設置MLOCK權限正常來說Oracle的啟動是會報錯的可是有些時侯比如Oracle的版本就不報錯啟動但是此時的異步Io是有問題的仔細查看你會在$ORACLE_HOME/rdbms/log看到大量的trc文件這種情形引的Hang我遇到過
  
  由於異常進程引起的我所說的是那些占用系統資源(cpumemory)特別大的進程這些進程一般占用cpu會達到%以上相對其它的進程比較突出可以通過hpunix的glancetopasIBM的nmodtopasps等工具進行監測
  
  由於主機系統陣列的某方面的瓶頸引起的在實際中最普遍的應該是Io的問題比如IO方面有瓶頸則dbwrlgwr就會引 free buffer waits log buffer space等一系列的等待事件此時是性能的問題感覺起來像Hang
  
  也有bug的因素我的庫都是最新的補丁這方面的問題還沒遇到過
  
  幾點處理建議
  當得到Oracle的庫奇慢或Hang時保持冷靜的頭腦很重要的可以按如下的方法進行一些處理
  
  首先要到操作系統上去用glance等工具進行一下觀察看一下cpu內存交換區磁盤的繁忙程度與平時是不是相似的同時看一看有沒有占系統資源特別大的進程有些時侯是這些進程引起的通過v$process和v$session兩個視圖找到這Oracle進程的sidserial#把它用Alter system kill session sidserial#;殺掉就行了如果平時同樣的時段你的磁盤的繁忙程度是%而些時它為%當然是假設了說明Oracle的庫沒准真的hang了
  
  時間來得及的話執行一下中的語句是很必要的這樣可以把這些信息提交給Oracle的supporter讓你們給你分析一下查一下原因
  
  如果你的庫開歸檔了出現Hang的時侯一定要看一下歸檔日志的文件系統是不是滿了做一個完備一些的網管系統是很必要的
  
  在HP系統上打開異步IO時一定不要忘記為dba這個組加上MLOCK的權限我就吃過這個虧
  
  時常的觀注一下v$session_wait或用statspack進行觀注一下等待事件一般IO相關的事件較多為Oracle打開異步IO多加幾個寫進程及為Oracle數據文件所用的raw device使用條帶都是很必要的與應用的開發商交流也很重要沒准最近新上的一個應用就特耗IO或特占CPU資源
  
  盡量要使用比較穩定的Oracle的版本比如Oracle及Oracel(最新為 )都很穩定的可以少去好多的麻煩

From:http://tw.wingwit.com/Article/program/Oracle/201311/16537.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.