oracle資料庫cpu佔用居高不下的解決辦法

wangzh3發表於2007-01-28

1、top
看到暫用cpu利用率較高的oracle或者相關程式。獲取程式id

2、使用如下語句查詢

select sql_text,spid,v$session.program,process from
v$sqlarea,v$session,v$process

where v$sqlarea.address=v$session.sql_address
and v$sqlarea.hash_value=v$session.sql_hash_value
and v$session.paddr=v$process.addr
and v$process.spid in (PID);

將第一步查詢到的pid輸入上面的括號裡面,用逗號分開。


3、就可以得到佔用cpu比較多的語句。

.....................................

發現這個語句裡面有bug(紅色部分),以及需要最佳化


4、先查詢紅色部分,修正錯誤,使之正常執行然後考慮最佳化。

5 修正了錯誤,發現只是解決了正確性問題,cpu佔用略有降低.但是還是不行 .然後建了一個索引 .解決問題.

oracle 9i以及以後的索引使用很讓人振奮不已.sarg中的任何一個,只要建了有效的索引,使用cbo就能起到效果,而不是之前一直認為的索引條件必須放在sarg的第一個,並且按照索引欄位的順序.也許這是oracle中cbo實現的高明之處吧.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/47869/viewspace-895363/,如需轉載,請註明出處,否則將追究法律責任。

相關文章