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

來源:互聯網
上載者:User
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

  5.2: 比較上述Session

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

  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語句,如果有可以直接去除提示。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.