• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    Oracle數據庫cpu100%處理

    發布時間:  2012/9/12 17:23:04

    兩種可能:

      1: A Background (instance) process

      2: An Oracle (user) process #此種可能最大。

    處理:

    1.查看每個Session的CPU利用情況:

        select ss.sid,se.command,ss.value CPU ,se.username,se.program-
     


      from v$sesstat ss, v$session se

      where ss.statistic# in

      (select statistic#

      from v$statname

      where name = 'CPU used by this session')

      and se.sid=ss.sid

      and ss.sid>6

      order by ss.sid

    2.比較一下哪個session的CPU使用時間最多,然后查看該Session的具體情況:

       select s.sid, s.event, w.wait_time, w.seq#, q.sql_text

      from v$session_wait w, v$session s, v$process p, v$sqlarea q

      where s.paddr=p.addr and

      s.sid=&p and

      s.sql_address=q.address

    ---------------------------------------------------------------------------------------------

    Oracle進程導致CPU 100%解決步驟

    1:檢查系統

    sar -u 5 5

    2: 看誰在用CPU

    topas

    ps -ef |grep ora #檢查第四列,C的大小(unit,100 per cpu)

    3:檢查CPU數量

    /usr/sbin/bindprocessor -q

    lsattr El proc0

    4:兩種可能:

    1: A Background (instance) process

    2: An Oracle (user) process #此種可能最大。

    5: 如果是用戶進程:那么高CPU的主要原因有:

    Large Queries, Procedure compilation or execution,

    Space management and Sorting

    5.1 查看每個Session的CPU利用情況:

    select ss.sid,se.command,ss.value CPU ,se.username,se.program

    from v$sesstat ss, v$session se

    where ss.statistiC# in

    (select statistic#

    from v$statname

    where name = ''CPU used by this session'')

    and se.sid=ss.sid

    and ss.sid>6

    order by ss.sid

    使用時間最多,然后查看該Session的具體情況:

    5.2: 比較上述Session

    比較一下哪個session的CPU

    select s.sid, event, wait_time, w.seq#, q.sql_text

    from v$session_wait w, v$session s, v$process p, v$sqlarea q

    where s.paddr=p.addr and

    s.sid=&p and

    s.sql_address=q.address;

    5.3:查看

    得到上述信息后,查看相應操作是否有hash joins 和 full table scans。如果有hash joins 和 full table scans那么必須創建相應的Index或者檢查Index是否有效。

    另外必須檢查是否有并行的查詢存在和同一時刻有多個用戶在執行相同的SQL語句,如果有必須關閉并行的查詢和任何類型的并行提示(hints);如果查詢使用intermedia數據,那么為了減少總的Index大小,必須限制使用Intermedia的Worldlist。(try restricting the wordlist that intermedia uses to help reduce the total indexsize)。

    6:注意事項

    上述方案只能根據已經運行完成的操作,對于正在執行的長時間操作只能等操作完成后才能檢測得到。因此我們可以通過另外一個很好的工具來檢測正在運行的長時間操作語句。v$session_longops,這個視圖顯示那些操作正在被運行,或者已經完成。每個process完成后會刷新本視圖的信息。

    7:怎樣尋找集中使用CPU的Process:

    很多時候會發現有N個Process在平均分享著CPU的利用率,這種情況唯一的可能性就是這些Process在執行著相同的Package或者Query.

    這種情況:建議通過statspack,在CPU高利用率額時候運行幾個快照,然后根據這些快照檢查Statspack報告,檢查報告中最TOP的Query。然后使用 sql_trace and tkprof 工具去跟蹤一下。

    同時檢查buffer cache 的命中率是否大雨95%。

    同時在報告中還需要檢查一下table scans (long tables),看是否在報告生成期間有存在全表掃描。

    8:參數

    另外還有一些不是特別重要的,但是也必須關心檢查的參數可能消耗CPU。

    parallel query 并行查詢:

    并行查詢最好用于數據倉庫的環境下,那種情況任何時候只有幾個用戶在同時使用。在一個聯機事務處理環境中,當同時許多用戶去并行查詢一個數據庫的巨大表時候,會導致CPU的爆滿。所以最好在數據庫的級別關閉并行查詢:設置參數如下:

    parallel_min_server = 0    parallel_max_server = 0

    parallel_automatic_tuning = false;

    在配置上述參數后,如果SQL語句中使用的并行的提示,那么還是有可能會出現并行查詢的情況,所以還需要繼續監視相關的SQL語句,如果有可以直接去除提示。


    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      1
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線