Oracle 佔用cpu過高的處理辦法
問題描述:
今天上午10點多,公司網路斷了一會,過了大約十來分鐘,網工處理好了,可資料庫這下子可撐不住了,開啟linux top查看了一下CPU百分百了,這可能是因為緩衝在客戶端的資料一下子全傳上來了導致資料庫壓力過大,可以前沒有出現過這種問題,於是進行了分析和處理,以下為處理過程:
問題分析:
一般cpu佔用效高都是排序、sql解析和全表掃描,這裡首先需要找出佔用cpu最高的sql,然後檢視他的執行計劃,比如:看執行計劃是走索引還是全表掃描(剛開始檢視top發現佔用同樣多的CPU的程序很多,還以為是oracle 的bug, 後來發現不是)。
處理過程:
1, 根據作業系統程序查詢Oracle資料庫中佔用最多CPU的SQL
使用Linux系統 "top命令->P "查出佔用cpu最高的程序PID
操作如下:在sqlplus中執行如下sql:
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_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr =
(SELECT addr FROM v$process c WHERE c.spid = '&pid'))
ORDER BY piece ASC
其中&pid 是使用top 檢視系統中程序佔用CPU極高的PID
找到SQL語句進行相應的調整優化
2,分析找到的sql語句,如檢視sql執行計劃。
總結:
這裡的問題是查詢的where 條件欄位沒有在索引裡面,導致查詢慢。經過重建並增加相關欄位到索引解決,但有點疑惑的是原來庫上查詢語句裡where條件欄位也沒有在索引裡面(新庫是使用expdp匯出再匯入到新庫的),查詢還正常,CPU也不高,oracle資料庫真是博大精深,好多問題還有待研究。
另外複合索引一定要匹配查詢的where條件,不然oracle不會走引索。
附:一般cpu佔用效高都是排序、sql解析和全表掃描。
=============================================================================================
版權所有,文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任! 謝謝合作!
QQ:[email protected]
Sina:weibo.com/kaijunfeng
Yahoo:[email protected]
相關推薦
Oracle 佔用cpu過高的處理辦法
問題描述: 今天上午10點多,公司網路斷了一會,過了大約十來分鐘,網工處理好了,可資料庫這下子可撐不住了,開啟linux top查看了一下CPU百分百了,這可能是因為緩衝在客戶端的資料一下子全傳上來了導致資料庫壓力過大,可以前沒有出現過這種問題,於是進行了分析和處理,以下為
記一次jdbc連線oracle資料庫佔用CPU過高的問題排查
背景: 公司有一個通訊系統,主要是通訊資料到客戶端程式所指定的資料庫,目前支援sqlserver、mysql和oracle三種類型的資料庫,此篇主要記錄一次oracle資料庫佔用CPU飆高的問題。 &nbs
mysql佔用CPU過高的解決辦法(新增索引)
下面是MYSQL佔用CPU高處理的一個例子,希望對遇到類似問題的朋友們有點啟發。一般來說MYQL佔用CPU高,多半是資料庫查詢程式碼問題,查詢資料庫過多。所以一方面要精簡程式碼,另一方面最好對頻繁使用的程式碼設定索引。 今天早上起來 機器報警 一查負載一直都在4以上
win10 解決 WMI Provider Host 佔用CPU過高問題
真心懶得寫Blog,但是之前遇到這個問題在網上查了一大圈,幾乎一摸一樣都是讓關防火牆等服務的,然而對於我來說,並沒有毛線用。 無奈,直接去微軟社群查,還真有一篇問題解決方案。順手翻譯一下放在這裡,希望能幫到大家。 參考連結:https://answers.m
tomcat占用cpu過高解決辦法
title 情況 處理 顯示 pri grep tar jstack 16進制 在工作中經常遇到tomcat占用cpu居高不下,針對這種情況有以下處理辦法進行排查。 jps --> 查看java的進程 top -Hp pid --> 根據jps得到的進程
記一次 MongoDB 佔用 CPU 過高問題的排查
1. 引言 今天檢視監控無意間突然發現自己的伺服器上,CPU 佔用率飆升到 100%,load 升到 10 以上,登入的響應已經達到半分鐘。 馬上執行 top,發現主要是 mongodb 佔用了大量
java應用佔用cpu過高原因分析
線上伺服器cpu佔用過高問題排查 1、定位最耗cpu的程序 命令:top 2、定位最耗cpu的執行緒 命令:Top –Hp PID 例如:Top –Hp 12086 3、列印執行緒堆疊資訊 命令:Printf ‘%x\n’ PID 例如:printf
Mysql佔用CPU過高如何優化,如何解決
Mysql佔用CPU過高如何優化 一次生產DB伺服器的 超負荷執行問題解決: 1.檢視生產DB伺服器top列表, 執行 top 命令 檢視Cpu(s) 引數一直處於 98% 狀態 ,load average達到了 5 (4核伺服器) 可見DB已經超負荷運行了
IAStorDataMgrSvc.exe程序佔用cpu過高解決方法
dell電腦無任何讀寫操作,但IAStorDataMgrSvc.exe程序始終佔用40%~50% 的cpu,高cpu佔用,電腦操作不順暢。 這個程序一般都是驅動程式版本有問題!別以為電腦都已經是裝的最新版本的驅動了就覺得不會是這個問題,本人就是安裝官方推薦的
完美解決win7系統中IE佔用CPU過高問題(轉)
選中”Main“右側會顯示子內容。從中找到”TabProcGrowth“,並雙擊開啟,將數值資料設定為”0“或者”1“。TabProcGrowth賦值為1,則表示允許系統最多可允許IE出現兩個程序,如果賦值為0,則表示IE只能有一個程序。一般我們設定為”0“。
解決win7 svchost佔用CPU過高的問題
最近發現 工作管理員裡, 一個svchost.exe 總是佔著大量CPU, 以為中毒了。 經過排查,感覺是Windows Update 時刻佔用著這個程序, 造成不停地運算處理。 解決方法: 在工作管理員裡,右鍵佔用cpu最多的那個 svchost.exe -&
linux排查java程序佔用CPU過高原因方法
前言 在運維tomcat伺服器時,我們通常會發現cpu的負載過高,大多數原因是由於java程式碼的bug引起的。可能你的java程式碼有很多,檔案也有很多,一行一行的排查是很費時間的。這時我們就可以使用jstack、top等工具對引起問題的程式碼進行定位,
磁碟IO過高 處理辦法
主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的內容僅是提供參考,如果磁碟IO確實比較大的話,是資料庫,可以進行讀寫分離或者分庫操作,減小磁碟壓力,檔案的話,可以利用raid來減輕壓力 一)I/O排程程式的總結: 1)當向裝置
JVM定位佔用cpu過高堆疊資訊(Linux)
第一步:使用top命令檢視程序佔用CPU的情況,獲取PID top
hdfs某臺伺服器datanode服務佔用cpu過高
1、問題描述 檢視一下6834的程序是hadoop的datanode服務,可以看到cpu負載過高。 2、解決方法 (1) 關閉大頁記憶體:echo never > /sys/kernel/mm/redhat_transparent_hug
記一次專案執行cpu過高處理
第一次處理這種問題,新手不懂的從何下手走了不少彎路,記錄一下,以後借鑑. 對於cpu執行過高的問題,首先要列印堆疊資訊,和執行緒執行cpu使用情況: 1.列印堆疊資訊: 先通過top -c找到自己的執行緒對應的id值: jstac
linux下查詢java程序佔用CPU過高原因
1. 查詢程序 top檢視程序佔用資源情況 明顯看出java的兩個程序22714,12406佔用過高cpu. 2.查詢執行緒 使用top -H -p <pid>檢視執行緒佔用情況
線上Java程式佔用 CPU 過高,請說一下排查方法?
> 我是風箏,公眾號「古時的風箏」,一個兼具深度與廣度的程式設計師鼓勵師,一個本打算寫詩卻寫起了程式碼的田園碼農! 文章會收錄在 [JavaNewBee](https://github.com/huzhicheng/JavaNewBee) 中,更有 Java 後端知識圖譜,從小白到大牛要走的路都在裡面。 這
mysql佔用伺服器cpu過高的原因以及解決辦法
排查方法 : > mysql -uroot -p #登陸資料庫 >******** &n
解決Linux buffer/cache記憶體佔用過高的辦法
-------原文地址 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html --------本文只是搬運 在Linux系統中,我們經常用free命令來檢視系統記憶體的使用狀態。在一個RHEL6的系統上,fr