捕獲問題sql解決過度cpu消耗問題

2021-08-07 11:52:20 字數 1188 閱讀 4796

參考蓋國強《深入解析oracle》

在生產環境中,我們可能會經常遇到 cpu 過度使用而影響系統效能或正常執行的問題。大多數情況下,系統的效能問題都是由不良 sql **引起的。

使用 vmstat 檢查空閒和等待

使用top檢查程序消耗,檢視是否有個別程序消耗異常

如果程序消耗比較平均,則檢視程序數量是否異常 ps -ef|grep ora|wc -l

查詢 v$session_wait 獲取各程序等待事件

select sid,event,p1,p1text from v$session_wait;

通過已知 session 的 sid,聯合 v$session、v$sqltext 檢視,獲得相關 session 正在執行的完整的 sql 語句

select sql_text

from v$sqltext a

where a.hash_value = (select sql_hash_value

from v$session b

where b.sid = '&sid')

order by piece asc

/獲得sql語句後,獲取該語句的執行計畫,之後進行優化。

從 v$sysstat 檢視中,我們可以查詢得到關於全表掃瞄的系統統計資訊:

sql> col name for a30

sql> select name,value from v$sysstat where name in ('table scans (short tables)','table scans (long tables)');

name value

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

table scans (short tables) 2984

table scans (long tables) 0

其中 table scans (short tables)指對於小表的全表掃瞄的此時;table scans (long tables)指對於大表的全表掃瞄的次數。

通常,如果乙個資料庫的 table scans (long tables)過多,那麼 db file scattered read 等待事件可能同樣非常顯著。

捕獲問題SQL解決過度CPU消耗問題

sql 如下 select sql text from v sqltext a where a.hash value,a.address in select decode sql hash value,0,prev hash value,sql hash value decode sql hash ...

oracle 效能調優 解決CPU問題

你能解決cpu容量問題,通過以下幾步 1.從負載消費上監測並解決cpu問題。2.通過利用oracle 資料庫資源管理器優化配置cpu資源來減少峰值負載的影響 3.當多個cpu的系統上執行多個資料庫例項的能夠利用例項限制策略來限制單個 資料庫例項能夠利用的cpu資源。4.增加硬體容量,提公升系統結構 ...

ibatis解決sql注入問題

最近看看了sql注入的問題,這篇文章解決了ibatis如何防sql注入攻擊,值得參考,對於ibaits引數引用可以使用 和 兩種寫法,其中 寫法會採用預編譯方式,將轉義交給了資料庫,不會出現注入問題 如果採用 寫法,則相當於拼接字串,會出現注入問題。例如,如果屬性值為 or 1 1 採用 寫法沒有問...