Oracle 11g新特性direct path read引發的系統停運故障診斷處理

来源:http://www.cnblogs.com/lhrbest/archive/2016/08/15/5774224.html
-Advertisement-
Play Games

黎俊傑 | 2016-07-28 14:37 聲明:部分表名為了脫敏而用XX代替 1、故障現象 (1)一個業務系統輸入用戶名與密碼後無法進入首頁,表現為一直在運行等待,運行緩慢 (2)整個系統無法正常使用,接近停運狀態 2、故障解決方法 調整資料庫參數alter system setevent='1... ...


黎俊傑 | 2016-07-28 14:37

聲明:部分表名為了脫敏而用XX代替

1、故障現象

(1)一個業務系統輸入用戶名與密碼後無法進入首頁,表現為一直在運行等待,運行緩慢

(2)整個系統無法正常使用,接近停運狀態

2、故障解決方法

調整資料庫參數alter system setevent='10949 trace name context forever, level 1'來關閉“direct path read”(直接路徑讀)特性,使SQL語句可以從緩存中查詢數據,達到降低I/O讀取量,使全表掃描的數據從緩存中讀取,加快SQL語句運行速度的目的。

3、故障原因總結

(1)由於部分SQL語句設計或編寫效率低下,以及表缺少適應的索引,導致SQL語句需要全表掃描,在表較小時,ORACLE資料庫將數據讀取到緩存後,後續雖然是全表掃描,但均是從緩存中讀取,所以問題未體現出來

(2)在表的大小不斷增大後,根據ORACLE 11g資料庫的演算法,在表達到db_cache_size(GB)的2%(預設值)以後,認為採用直接路徑讀(跳過緩存,直接從磁碟文件中全掃描讀取)

(3)DX_T_XXVIATE表大小為1GB,在大量反覆以direct pathread磁碟重覆讀取的情況下,消耗大量的I/O資源,將伺服器I/O幾乎耗盡

(4)在主機I/O耗盡的情況下,系統的讀、寫,均幾乎處於癱瘓狀態

(5)在關閉ORACLE 11G資料庫的direct path read新特性功能後,讀取方式恢復到從緩存中讀取,磁碟讀降到“0”,系統恢復正常

4、改進建議

(1)優化訪問DX_T_XXVIATE 相關的SQL語句與設計合適的索引,避免大表全表掃描。

5、故障原因分析

5.1 7月11日故障時段資料庫伺服器I/O等待嚴重

wps5655.tmp[4]

5.2 7月11日故障時段磁碟響應非常緩慢

wps5665.tmp[4]

5.3 對比故障當日(7月11日)與上周的I/O磁碟讀取量,比上周大十倍

wps5676.tmp[4]

故障前、中、後磁碟讀取量對比圖:

wps5686.tmp[4]

上面高的藍色線,是故障當日(2016年7月1日,周一)的磁碟Disk Read KB/s指標線

5.4 高度消耗I/O的SQL語句。

上面SQL_ID為b8m6wy846qgbk的SQL語句,physical reads鶴立雞群,可見此SQL語句的影響最為嚴重。

5.5 全表掃描單次超過6秒的表與其SQL語句統計。

統計彙總時間:08:00—10:00

wps5687.tmp[4]

wps5698.tmp[4]

統計時間:08:00—10:00單次掃描超過6秒的SQL語句及時長詳細清單

wps56A9.tmp[4]

上面數據顯示,08:00—10:00統計時間內,所有全表掃描超過6秒的表,全部是DX_T_XXVIATE這一張表,涉及到的SQL語句有60多條,執行次數最多的數SQL_ID為b8m6wy846qgbk的語句。

5.6 全表掃描最嚴重SQL語句故障前、後、故障解決後磁碟讀取數量對比

5.6.1 7月11日以前系統運行正常的情況下SQL_ID為b8m6wy846qgbk的語句執行統計信息

--執行統計信息(buffer get很大,但是disk reads為0,判定數據基本從buffer中讀取):

wps56B9.tmp[4]

--執行計劃(對DT_T_OBVIATE全表掃描,預計時間為5分鐘30秒):

wps56BA.tmp[4]

5.6.2 7月11日故障當日SQL_ID為b8m6wy846qgbk的語句執行統計信息

--執行統計信息(buffer get和disk reads都一樣的巨大,基本判定每次數據全是從磁碟讀取到BUFFER):

wps56CB.tmp[4]

--執行計劃(對DT_T_OBVIATE全表掃描,預計時間為5分鐘30秒,從執行計劃的PHV和plan均看出執行計劃在系統故障時與正常時,是保持一致的):

wps56DC.tmp[4]

5.6.3 故障解決後(取7月12日數據)SQL_ID為b8m6wy846qgbk的語句執行統計信息

--執行統計信息(故障解決後,PVH值不變,Disk Reads又恢復到了故障前的“0”,說明每次執行數據又是從BUFFER中讀取的):

wps56DD.tmp[4]

5.7等待事件變化識別數據讀取方式變化比較

wps56DE.tmp[4]

看來,系統實際上在2016年7月10日(周日),SQL語句的數據讀取方式就發生了少量的direct path read,系統實際上已經處於間歇式緩慢狀態,到了2016年7月11日(周一),問題特別嚴重,約99%左右的執行是direct path read,導致I/O耗盡,系統癱瘓。

About Me

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

● 本文來自於微信公眾號轉載文章,若有侵權,請聯繫小麥苗及時刪除,非常感謝原創作者的無私奉獻

● 本文在ITpub(http://blog.itpub.net/26736162)、博客園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 小麥苗分享的其它資料:http://blog.itpub.net/26736162/viewspace-1624453/

● 原文地址:http://mp.weixin.qq.com/s?__biz=MzA5MDQ5Nzc0MA==&mid=2247483720&idx=1&sn=646e8c1fc34d7afb13484dd7e483534b&scene=1&srcid=0815syZkJIb1ficYRJVbbc6H#rd

● QQ群: 230161599   微信群:私聊

● 聯繫我請加QQ好友(642808185),註明添加緣由

● 【版權所有,文章允許轉載,但須以鏈接方式註明源地址,否則追究法律責任】

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

長按下圖識別二維碼或微信客戶端掃描下邊的二維碼來關註小麥苗的微信公眾號:xiaomaimiaolhr,學習最實用的資料庫技術。

wpsF73.tmp

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • PyMySQL Evaluation This page will capture issues related to Openstack moving to the PyMySQL driver for MySQL/MariaDB dbapi access. Rationale While the ...
  • HQL DML 主要涉到對Hive表中數據操作,包含有:load、INSERT、DELETE、EXPORT and IMPORT,詳細資料參見:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML 目錄: Loadin ...
  • http://smilejay.com/2013/03/python3-mysql-connector/ Python 2.x 上連接MySQL的庫倒是不少的,其中比較著名就是MySQLdb(Django項目都使用它;我也在開發測試系統時也使用過),見:http://sourceforge.net/ ...
  • 本文介紹了python3 4連接mysql資料庫的方法,在python3 4中使用原來python2 7的mysqldb已不能連接mysql資料庫了,可以使用pymysql。 在python3.4中使用原來python2.7的mysqldb已不能連接mysql資料庫了,可以使用pymysql,來完成 ...
  • Can't install mysql-python version 1.2.5 in Windows http://stackoverflow.com/questions/37092125/cant-install-mysql-python-version-1-2-5-in-windows No ...
  • 查看今天新增的文章、計算本月新增的用戶數等。這種類似的需求會有很多,也會很常見,可以使用sql的技巧來完成這些工作。 ...
  • 包(package)是多個函數的集合,常作為分享代碼的基本單元,代碼封裝成包可以方便其他用戶使用。越來越多的R包正在由世界上不同的人所創建並分發,這些分發的R包,可以從CRAN 或 github 上獲取,由於向 CRAN 提交包審核非常嚴格,有些開發者並沒有將自己開發的R包提至CRAN的意向,通過 ...
  • 參考文章:微信公眾號文章 在sql中怎麼查看一個字元的ascii編碼,so easy !! 結果是這樣的 還有一點,Unicode編碼只編碼第一個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...