DBA急救手冊:拆解Oracle死鎖圖,ORA-00060錯誤秒級定位終極指南

關于“死鎖圖”(Deadlock Graph)的一點淺見

當 Oracle 檢測到死鎖時,檢測到死鎖的會話中的當前 SQL 將被取消,并執行“語句級回滾”,以釋放資源并避免阻塞所有活動。

檢測到死鎖的會話仍然“存活”,并且事務的其余部分仍然處于活動狀態。如果您在該會話中重復上次(被取消的)操作,那么您將再次遇到死鎖。

當檢測到此類死鎖時,會生成一個trace文件,其中包含“死鎖圖”(以及其他有用信息)。

通過對大量服務請求的審查,我們發現最常見的死鎖類型可以通過一個“特征”死鎖圖來識別,該圖可用于確定所遇到的死鎖的“類型”。
本文將展示每種類型的示例,以便調查和解決工作能夠沿著正確的方向進行。

這篇文章將說明如何利用由 ORA-00060 錯誤生成的“死鎖圖”(Deadlock Graph)來識別根本問題。
一個典型的死鎖圖可能看起來像這樣:


為了區分不同的類型,我們采用了鎖類型以及持有者和等待者所持有的/等待的模式,并以此為每個類型創建了一個簽名。
例如,前面的圖表顯示了以下特征:

  1. 死鎖圖中多于 1 行
  1. 所有鎖類型均為排他鎖(TX)
  2. 持有者和等待者的鎖模式均為 X(獨占模式,模式 6)

通過關注圖表中的這些特定特征:


將給我們以下類型(這通常是應用程序死鎖):

TX X X Tx x x
TX X X Tx x x

請注意,對于死鎖類型識別而言,“關鍵簽名”中最重要的部分是鎖類型以及它所請求的模式。主要類型在下表中已突出顯示。
最常見的類型有:

Oracle 鎖模式有

0 - none 0—無
1 - null (NULL) 1 - null (null)
2 - 行共享,也稱為子共享表鎖(SS)
3 - 行排他表鎖,也稱為子排他表鎖(SX)
4 - 共享表鎖(S)
5 - 共享行排他鎖,也稱為共享子排他表鎖(SSX)
6 -排他(X)

注意:通常我們會看到應用程序死鎖的“特征”與其他特征之一的組合,而不是“典型”的重復特征。例如,您可能會看到類似這樣的內容:

死鎖圖---------Blocker(s)--------  ---------Waiter(s)---------
Resource Name                    process session holds waits  process session holds waits
TM-XXXXXXXX-00000000       11      333     SX                      22        44          SX     SSX
TX-XXXXXXXX-XXXXXXXX       22      44      X                        11        333                    X

這是“應用程序死鎖”和“外鍵(FK)約束缺失索引”死鎖的組合。在這種情況下,建議先解決非“TX X X”的癥狀,因為不太常見的 FK/ITL/位圖簽名更有可能是根本原因,而不是應用程序死鎖。

請注意,trace 文件包含各種相關信息,這些信息可能與問題有關,也可能無關,這取決于死鎖的類型。

例如,在“Rows Waited on”部分,“dictionary objn”值在某些情況下可用于識別相關對象,但在其他情況下可能指向完全不相關的信息。
如果信息可用,會在相關部分注明,否則請勿依賴。

關于鎖定模式和鎖定的更多內容請見下文:

Oracle? Database Concepts
12c Release 1 (12.1) 
E17633-20
Chapter 9 Data Concurrency and Consistency
https://docs.oracle.com/database/121/CNCPT/consist.htm#CNCPT020

參考文檔

Document 1552194.1 ORA-00060 Deadlock Graph Not Matching any Examples: Suggested Next Steps
Document 60.1 Troubleshooting Assistant: Oracle Database ORA-00060 Errors on Single Instance (Non-RAC) Diagnosing Using Deadlock Graphs in ORA-00060 Trace Files
How to Identify ORA-00060 Deadlock Types Using Deadlock Graphs in Trace (Doc ID 1507093.1)
Document 1559695.1 How to Diagnose Different ORA-00060 Deadlock Types Using Deadlock Graphs in Trace 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92334.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92334.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92334.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++中的默認函數學習

今天在學習QT別人的項目時看到有個函數在聲明和調用時參數個數不一樣,查了下是c中的一種函數類型,這個類型的函數可以讓代碼更簡潔、靈活。定義:在函數聲明時,給某些參數預先設定一個默認值。調用函數時,如果省略這些參…

HBase分片技術實現

HBase分片技術實現概述HBase是基于Hadoop的分布式、可擴展的NoSQL數據庫,采用列族存儲模型。HBase的分片機制通過Region自動分割和負載均衡實現水平擴展,支持PB級數據存儲和高并發訪問。HBase架構核心組件HMaster: 集群管理節點,負責Region分…

Python爬蟲實戰:研究awesome-python工具,構建技術資源采集系統

1. 引言 1.1 研究背景 Python 憑借語法簡潔、生態豐富等特點,已成為全球最受歡迎的編程語言之一。截至 2024 年,PyPI(Python Package Index)上的第三方庫數量已突破 45 萬個,涵蓋從基礎工具到前沿技術的全領域需求。然而,海量資源也帶來了 "信息過載" 問題 —…

【實時Linux實戰系列】實時視頻監控系統的開發

隨著技術的不斷發展,實時視頻監控系統在安防、交通管理、工業自動化等領域得到了廣泛應用。實時Linux系統因其高效的實時性和穩定性,成為開發高性能視頻監控系統的理想選擇。掌握基于實時Linux的視頻監控系統開發技能,對于開發者來說不僅能夠…

力扣-11.盛最多水的容器

題目鏈接 11.盛最多水的容器 class Solution {public int maxArea(int[] height) {int res 0;for (int i 0, j height.length - 1; i < j; ) {res Math.max(res, Math.min(height[i], height[j]) * (j - i));if (height[i] < height[j]) {i;} else {j--;}}return r…

大型音頻語言模型論文總結

大型音頻語言模型&#xff08;Large Audio Language Model, LALM&#xff09;是一類基于深度學習的智能系統&#xff0c;專門針對音頻信號&#xff08;如語音、音樂、環境聲等&#xff09;進行理解、生成、轉換和推理。它借鑒了大型語言模型&#xff08;LLM&#xff09;的“預訓…

如何解決網頁視頻課程進度條禁止拖動?

function skip() {let video document.getElementsByTagName(video)for (let i0; i<video.length; i) {video[i].currentTime video[i].duration} } setInterval(skip,6666)無法拖動視頻進度。 使用F12啟動調試模式。 function skip() {let video document.getElements…

基于deepSeek的流式數據自動化規則清洗案例【數據治理領域AI帶來的改變】

隨著AI大模型的大量普及&#xff0c;對于傳統代碼模式產生了不小的影響&#xff0c;特別是對于大數據領域&#xff0c;傳統的規則引擎驅動的數據治理已經無法滿足數據增長帶來的治理需求。因此主動型治理手段逐漸成為主流&#xff0c;因此本文介紹一個基于deepSeek的流式數據自…

【論文分析】【Agent】SEW: Self-Evolving Agentic Workflows for Automated Code Generatio

1.論文信息標題&#xff1a;SEW: Self-Evolving Agentic Workflows for Automated Code Generatio&#xff1a;用于自動代碼生成的自我進化的代理工作流程收錄的會議/期刊&#xff1a;作者信息&#xff1a;arxiv&#xff1a;&#x1f517;github網站&#xff1a;&#x1f517;g…

MCP 協議:AI 時代的 “萬能轉接頭”,從 “手動粘貼” 到 “萬能接口”:MCP 協議如何重構 AI 工具調用規則?

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

VUE本地構建生產環境版本用于局域網訪問

&#x1f680;構建生產環境版本用于局域網訪問&#xff08;適用于 Vue 項目&#xff09; 在開發 Vue 項目的過程中&#xff0c;很多人使用 yarn serve 啟動開發服務器進行調試。但開發模式存在以下問題&#xff1a; 訪問速度慢&#xff0c;特別是局域網訪問&#xff1b;熱更新頻…

【密碼學】5. 公鑰密碼

這里寫自定義目錄標題公鑰密碼密碼學中的常用數學知識群、環、域素數和互素數模運算模指數運算費爾馬定理、歐拉定理、卡米歇爾定理素性檢驗歐幾里得算法中國剩余定理&#xff08;CRT&#xff09;離散對數二次剩余循環群循環群的選取雙線性映射計算復雜性公鑰密碼體制的基本概念…

VINS-Fusion+UWB輔助算法高精度實現

VINS-FusionUWB輔助算法高精度實現 摘要 本文詳細介紹了基于VINS-Fusion框架結合UWB輔助的高精度定位算法實現。通過將視覺慣性里程計(VIO)與超寬帶(UWB)測距技術融合&#xff0c;顯著提高了復雜環境下的定位精度和魯棒性。本文首先分析了VINS-Fusion和UWB各自的技術特點&#…

新手向:Python實現簡易計算器

你是否一直想學習編程但不知從何入手&#xff1f;這篇詳細的教程將帶領完全零基礎的讀者&#xff0c;循序漸進地掌握如何用Python實現一個簡易計算器。我們將從最基本的編程概念講起&#xff0c;確保每一位初學者都能跟上進度。準備工作在開始之前&#xff0c;你需要&#xff1…

區塊鏈賦能供應鏈金融:解決信任與效率問題

摘要: 隨著全球經濟一體化和數字化進程的加速,供應鏈金融在實體經濟發展中的作用愈發關鍵。然而,傳統供應鏈金融面臨著信任機制薄弱和效率低下等諸多挑戰。區塊鏈技術憑借其去中心化、不可篡改、可追溯等特性,為供應鏈金融帶來了創新的解決方案,能夠有效解決信任與效率問題…

無人機 × 巡檢 × AI識別:一套可復制的超低延遲低空視頻感知系統搭建實踐

?? 引言&#xff1a;低空感知&#xff0c;正重構數字世界的“底層感官接口” 隨著低空經濟進入規模化部署階段&#xff0c;感知系統不再是“任務輔助”&#xff0c;而是演變為支撐智能化運行的基礎設施核心模塊。從電力巡檢的高空細節識別&#xff0c;到城市安防的區域態勢掌…

STM32U5 外部中斷不響應問題分析

關鍵字&#xff1a; EXTI 1. 問題背景 客戶的終端客戶反饋產品會有偶發性的功能異常。問題比較難以復現。 經過調查&#xff0c;在 BOOT 程序跳轉到 APP1 程序中時相對比較容易復現問題。查看客戶代碼&#xff0c;發現客戶在 BOOT 程序中會對 EXTI 進行初始化&#xff0c;跳…

17.Linux :selinux

Linux &#xff1a; selinux DAC vs MAC 對比模型控制方式決策依據安全強度DAC自主訪問控制文件所有者的權限設置低MAC強制訪問控制系統級安全策略極高SELinux的核心原理是基于 強制訪問控制&#xff08;MAC&#xff09; 模型&#xff0c;通過為系統資源打上安全標簽并制定精細…

如何在不停機的情況下,將MySQL單庫的數據遷移到分庫分表的架構上?

在業務高速發展的過程中&#xff0c;單庫單表的MySQL架構往往會成為系統性能的瓶頸。將單庫遷移到分庫分表架構是一種常見的擴展方案&#xff0c;但如何在保證業務連續性的前提下完成這一遷移是一個挑戰。以下是不停機遷移的幾種主要方案&#xff1a; 一、基于雙寫的遷移方案 1…

Unix/Linux 系統編程中用于管理信號處理行為的核心概念或模型

在 Unix/Linux 系統編程中&#xff0c;管理信號處理行為涉及以下核心概念和模型&#xff0c;它們共同構成了信號處理的框架&#xff1a;1. 信號&#xff08;Signal&#xff09;模型 軟件中斷&#xff1a;信號是異步事件通知機制&#xff0c;類比硬件中斷預定義類型&#xff1a;…