參考蓋國強《深入解析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 採用 寫法沒有問...