1. 程式人生 > >資料庫正常執行,突然變慢的解決思路

資料庫正常執行,突然變慢的解決思路

<資料庫正常執行,突然變慢的解決思路>


資料庫正常執行,突然變慢的解決思路:

1、檢視資料庫版本(select * from v$version)

2、檢視作業系統的程序(top,ps -ef)

3、檢視作業系統的IO情況(sar 1 10)

4、製作awr報表,檢視報告

在報告中 :


Event Waits %Time -outs Total Wait Time (s) Avg wait (ms) Waits /txn
control file parallel write 500
0.00 11 23 10.42
log file parallel write 107 0.00 1 8 2.23
log file sync 45 0.00 0 8 0.94
db file sequential read 182 0.00 0 2 3.79
SQL*Net break/reset to client 6 0.00 0 17 0.13
os thread startup
1 0.00 0 28 0.02
db file scattered read 5 0.00 0 2 0.10
SQL*Net more data from client 39 0.00 0 0 0.81
control file sequential read 1,142 0.00 0 0 23.79
SQL*Net message to client 7,743 0.00 0
0 161.31
SQL*Net more data to client 346 0.00 0 0 7.21
latch: shared pool 1 0.00 0 1 0.02
LGWR wait for redo copy 20 0.00 0 0 0.42
direct path read 89 0.00 0 0 1.85
rdbms ipc reply 3 0.00 0 0 0.06
direct path write 12 0.00 0 0 0.25
SQL*Net message from client 7,739 0.00 17,212 2224 161.23
Streams AQ: qmn slave idle wait 54 0.00 1,475 27322 1.13
Streams AQ: qmn coordinator idle wait 109 50.46 1,475 13536 2.27
virtual circuit status 50 100.00 1,458 29156 1.04
Streams AQ: waiting for time management or cleanup tasks 1 100.00 77 76683 0.02
jobq slave wait 20 100.00 59 2931 0.42


客戶端連線時間都是很長,很可以。我就是問下伺服器管理員,此伺服器的網路是否和平時網路一致。

伺服器管理員和我說這臺伺服器是遠端連線。遠端連線稍有延遲很正常。所以我做出了合理解釋。

       通過這個問題解決,感覺自己在這方面很欠缺,所以在網上找了些資料。

以下是轉載資料:

  資料庫慢一般有三種情況

  1。逐漸變慢

  2。突然變慢

  3。不定時變慢

  第一種情況 “逐漸變慢”,要建立一個長期的監控機制。比如,寫個shell指令碼每天的忙時(通常9~10 etc.)定時收集os,network,db的資訊, 每個星期出report對收集到的資訊進行分析。這些資料的積累,可以決定後期的優化決策,並且可以是DBA說服manager採用自己決策的重要資料。DBA的價值,就在每個星期的report中體現。

  第二種情況 “突然變慢”,也是最容易解決的。先從業務的角度看是DB的使用跟以前有何不同,然後做進一步判斷。硬體/網路故障通常也會引起DB效能的突然下降。

  第一步: 察看DB/OS/NETWORK的系統log, 排除硬體/網路問題

  第二步:察看資料庫的等待事件,根據等待事件來判斷可能出問題的環節。如果, 沒有等待事件, 可以排除資料庫的問題. 如果有等待時間, 根據不同的等待事件, 來找引起這些事件的根源.

  比如latch free等跟SQL parse有關係的等待事件,OS的表現是CPU 的佔用率高

  db file scattered read等跟SQL disk read有關係的等待時間, OS的表現是iostat可以看到磁碟讀寫量增加

  第三步: 察看os的資訊, CPU/IO/MEMORY等.

  a. Cpu 的佔用率

  CPU佔用率與資料庫效能不成反比. CPU佔用率高, 不能說明資料庫效能慢. 通常情況, 一個優化很好, 而且業務量確實很大的資料庫, CPU的佔用率都會高, 而且會平均分佈在每個程序上. 反過來, CPU的佔用率都會高也不代表資料庫效能就好, 要結合資料庫的等待事件來判斷CPU佔用率高是否合理.

  如果某個程序的cpu佔用高, 肯定是這個程序有問題. 如果,不是oracle的程序, 可以讓application察看是否程式有死迴圈等漏洞. 如果,是oracle的程序, 可以根據pid查詢oracle資料字典看看這個程序的發起程式, 正在執行的sql語句, 以及等待事件. 然後, 不同情況使用不同的方法來解決.

  b. IO

  排除硬體的IO問題, 資料庫突然變慢, 一般來說, 都是一個或幾個SQL語句引起的.

  如果IO很頻繁, 可以通過優化disk reads高的TOP SQL來解決. 當然這也是解決IO問題的最笨也是最有效的辦法.

  OS以及儲存的配置也是影響IO的一個重要的原因.

  比如, 最常見的HP-unix下非同步IO的問題, 如果DBA GROUP沒有MLOCK的許可權, ORACLE是不使用AIO的. 偏偏OS與DB的兩方的admin如果配合不夠好地話, 這個配置就很容易給漏掉了.

  c. Memory

  第二種情況與memory的關係比較小, 只要SGA區配置合理沒有變化, 一般來說, 只要不是Application Memory leak, 不會引起突然變慢的現象.

  第三種情況 “不定時變慢”, 是最難解決的. 現場出現的問題原因也是五花八門千奇百怪, 最重要的是, 出現慢的現象時, 以最快的速度抓取到最多的資訊以供分析. 先寫好抓取資料的shell 指令碼, 並在現象發生時及時按下回車鍵

  一個例子

  資料庫突然變慢

  背景: 一個新應用上線後, 資料庫突然變慢

  第一步, 調查新應用

  據開發人員講新應用訪問的都是新建立的表, 表的資料量很小, 沒有複雜的SQL查詢.

  查詢 v$sqlarea 分別按照disk_reads / buffer_gets / executions 排序, TOP SQL 中沒有新應用的SQL. 排除新應用資料庫訪問照成的效能問題.

  第二步, 察看資料庫log/ OS log

  資料庫log中可以看到大量的ORA-7445錯誤, 以及大量的dump檔案. 分析dump檔案(時間久了,沒有dump檔案可參考, 具體細節沒法描述下來. ), 發現是新應用通過dblink訪問remote DB時生成的dump檔案, 應用開發人說沒法修改, Oracle也沒有相應的patch解決.

  OS log中沒有錯誤資訊

  第三步, 察看statspack report

  從wait events中看到,Top event是“buffer busy waits” “db file parallel write” 等於IO相關的等待事件.

  從buffer busy waits 的統計資訊來看, 是等待data block.

  還有些physical reads等資訊與從前比沒有太多的異常.

  Tablespace 的IO reads/writes也沒有異常, 但是wait明顯增加.

  初步確定是IO問題.

  第四步, 察看OS的資訊

相關推薦

資料庫正常執行突然解決思路

<資料庫正常執行,突然變慢的解決思路> 資料庫正常執行,突然變慢的解決思路: 1、檢視資料庫版本(select * from v$version) 2、檢視作業系統的程序(top,ps -ef) 3、檢視作業系統的IO情況(sar 1 10) 4、製作awr報表,檢視報告 在報告中 :

springboot打包成jar檔案無法正常執行解決辦法已經找到

1.pom.xml 指向啟動頁 <!-- 打包包名 -->     <build>         <finalName>bigData</finalName&

MyEclipse下Tomcat啟動突然頁面響應也

今天早上發現的,啟動變得很慢,執行也慢,頁面響應更慢。當時以為是MyEclipse的問題,重啟了還不行,我又懷疑是電腦問題,電腦也重啟,還是沒解決問題,上網一搜剛好搜到這篇文章給了我很大啟發( http://blog.csdn.net/sinat_21946155/article/de

添加了一個欄位查詢速度突然

幾年前寫的一個小總結,本來寫在公司的wiki上,現在讀起來感覺寫的挺好玩的,粘到這裡。   做一個需求,要給平臺數據表加個欄位。加欄位之後,觸發程式,通過DbVisualizer查詢,資料正確入庫,然後通過頁面訪問該表,提示連線超時!!!WTF!剛才通過頁面訪問的時候還好好的啊!!  

Java服務程式突然如何定位?

檢查網路是否存在問題 最先排查的原因就應該是網路問題,即外部因素。常見的著手方法是測試網速,這裡推薦工具speedtest,當然類似的有很多: 1)安裝: $ wget https://raw.githubusercontent.com/sivel/speedtest-cli/

AndroidStuido程式碼報紅色但是可以正常執行怎麼解決

AndroidStuido程式碼中突然報紅色但是可以正常執行,有的網友說只需要點選Invalidate 重啟下AndroidStuido就好了但是有時這樣做並不能解決問題,還是報錯是因為AndroidStuido在協同開發的時候用Git下載程式碼的時候將團隊開發其他人上傳的local.pro

ubuntu突然解決

今天上午一次關機後,再開機後,ubuntu突然變得很慢,開啟一個終端都需要好長時間。 鬱悶 重啟好幾次,問題依舊 唉。。。最後發現不能進行中文輸入,懷疑是 SCIM 出了問題。於是試著將 ~/.scim目錄刪除,再執行

VMWare執行Windows XP突然的可能原因--奇葩

概述 與360有關,將360安全衛士和360防毒解除安裝,就能恢復正常啟動速度。 詳細介紹 之前,安裝VMWare,安裝過一個Windows XP。(裝XP原因:為什麼裝XP,為了跑VC6.0。為什麼VC6.0,實驗需要)當時,用了兩三天就沒有再用那個

vs2010 MFC +win7下的程式 在win7上正常執行Server2008就出錯(ADO資料庫連接出錯)

我的機子是WIN7系統,在WIN7下開發的MFC ADO應用程式到XP上就不能運行了。 解決方案如下: 1、先下載下面的檔案 2、拿32位系統示例 1、將Msado60_Backcompat_x64.tlb複製到C:\Program Files\Common Files\System\ado\目錄

win7系統突然解決方法

Win7系統突然變慢 電腦用了一段時間之後,突然沒來由的變的很慢,我考慮是不是我的電腦中的毒還是有別的原因,經過很多次這樣的事件之後我還是處於渾渾噩噩當中,不瞭解系統為什麼出現這樣的問題。下面我來把自己的解決方法按照時間順序說一下,希望可以幫到遇到同樣情況的童鞋。 情況技術

後臺接口正常執行前臺報404

list back class urn style nbsp req 函數 clas 後臺執行getPlproductList,明明方法執行成功,但是前臺卻提示404 @RequestMapping(value = "/getPlproductList", method

請求一個方法後臺能正常執行前臺報錯404

responsebody************請求一個方法,後臺能正常執行,前臺報錯404************前言:我是通過ajax請求,雖然後臺能正常執行,但是ajax卻不能執行success方法,執行了error方法。前臺報錯404,說找不到XX.jsp頁面。後臺方法是一個沒有返回值的方法。分析:找

idea啟動專案突然解決方案

今天遇到一個RP問題:在使用idea操作中,重啟專案時突然專案啟動很慢,檢視啟動日誌沒有報錯,只是停留在一個地方,停滯不前,就算是啟動起來專案執行也很慢,停留如圖: 上網查了一些資料也沒有解決,好歹最好RP回來了,找到了解決的方法;原來是自己在debug時在專案中打了斷點沒有取消,於是就去

新安裝ubuntu安裝軟體時下載速度解決方法

轉自:https://blog.csdn.net/jfhkd2012/article/details/50912757 一種情況就是你的網路本身速度就比較慢導致的;另一種情況,就是你的系統選擇的源,由於你選擇的源可能在國外或者即使在國內也因為各種情況導致與你的連線速度會比較慢。 1、開啟 系

簡單SQL也很資料庫端到端效能問題的解決思路探討

作者介紹 田冬雪,美團點評資料庫架構師,7年資料庫自動化運維經驗。目前負責美團點評基礎技術研究、資料庫高可用架構優化、資料庫運維自動化推進,美團點評工具平臺融合等。 作為綜合性多業務的“網際網路+生活服務”平臺,美團點評對資料庫的穩定執行有較高的要求,小概率的效能抖動(包括慢SQL)都會造成一定的可

win10輸入法突然繁體解決辦法

這是因為ide的程式碼格式化快捷鍵ctrl shift f與簡繁體切換快捷鍵衝突了。 解決辦法,輸入法的設定裡面,快捷鍵點進去,拖到最下面,關掉簡繁切換即可 然後--------------------------------------- -----

關於quarz的使用中出現了開發環境下正常執行測試環境(LINUX - Ubutu15.4)使用異常的情況

開發中使用了spring和quarz結合的方式,執行了四個任務,兩個流量資料同步,日同步每天0點同步資料,每小時的資料存放在redis裡,供頁面使用。另外兩個任務負責同步squid的日誌到第三方日誌伺服器,一個每30秒檢測一次日誌狀態,日誌檔案大於10M或者0點以後未同步資料就會開始使用我編寫的py

線上服務執行時間長問題的分析定位

問題 最近線上有一個服務,執行個一兩天,就會變得很慢。這裡很慢指的是經常對於請求的響應時間很大,有時甚至有二三十秒,導致別人調介面,經常出現超時問題。這裡簡單介紹些這個問題的定位方法過程以及最後怎麼解決的。 很多時候,我們更應該積累分析問題、解決問題的方法,

shell指令碼判斷某個linux程式是否在正常執行如果不是就啟動他

#! /bin/bash #  author qzlink #  time  2014-9-19 #  program : check program running .. function check(){     count=`ps -ef |grep $1 |grep

jmeter再新增CSV Data Set Config元件後就執行不了禁用後又可以正常執行求大神指教。

歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯器進行了一些功能拓