數據庫死鎖解決

一、Oracle死鎖查看和解決辦法匯總
由于生產的tomcat 經常有假死問題,困擾很久,最后發現有死鎖,解決辦法分享

1.1、查看死鎖
1.1.1、用dba用戶執行以下語句
select username,lockwait,status,machine,program from v$session where sid in
?(select session_id from v$locked_object)
如果有輸出的結果,則說明有死鎖,且能看到死鎖的機器是哪一臺。字段說明:
Username:死鎖語句所用的數據庫用戶;
Lockwait:死鎖的狀態,如果有內容表示被死鎖。
Status: 狀態,active表示被死鎖
Machine: 死鎖語句所在的機器。
Program: 產生死鎖的語句主要來自哪個應用程序

1.1.2、用dba用戶執行以下語句,可以查看到被死鎖的語句。
select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))

1.2、死鎖的解決方法
1.2.1、查找死鎖的進程:
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;


1.2.2、kill掉這個死鎖的進程:
alter system kill session ‘sid,serial#’; (其中sid=l.session_id)
1.2.3、如果還不能解決:
select pro.spid from v$session ses,
v$process pro
where
ses.sid=XX
and ?ses.paddr=pro.addr;

其中sid用死鎖的sid替換:
--ORACLE 就是查表,需要SYSTEM,SYS(有相應權限的用戶)執行下面的SQL語句就可以了查看鎖代碼
SELECT sn.username,
? ? ? ?m.SID,
? ? ? ?sn.SERIAL#,
? ? ? ?m.TYPE,
? ? ? ?DECODE(m.lmode,
? ? ? ? ? ? ? 0,
? ? ? ? ? ? ? 'None',
? ? ? ? ? ? ? 1,
? ? ? ? ? ? ? 'Null',
? ? ? ? ? ? ? 2,
? ? ? ? ? ? ? 'Row Share',
? ? ? ? ? ? ? 3,
? ? ? ? ? ? ? 'Row Excl.',
? ? ? ? ? ? ? 4,
? ? ? ? ? ? ? 'Share',
? ? ? ? ? ? ? 5,
? ? ? ? ? ? ? 'S/Row Excl.',
? ? ? ? ? ? ? 6,
? ? ? ? ? ? ? 'Exclusive',
? ? ? ? ? ? ? lmode,
? ? ? ? ? ? ? LTRIM(TO_CHAR(lmode, '990'))) lmode,
? ? ? ?DECODE(m.request,
? ? ? ? ? ? ? 0,
? ? ? ? ? ? ? 'None',
? ? ? ? ? ? ? 1,
? ? ? ? ? ? ? 'Null',
? ? ? ? ? ? ? 2,
? ? ? ? ? ? ? 'Row Share',
? ? ? ? ? ? ? 3,
? ? ? ? ? ? ? 'Row Excl.',
? ? ? ? ? ? ? 4,
? ? ? ? ? ? ? 'Share',
? ? ? ? ? ? ? 5,
? ? ? ? ? ? ? 'S/Row Excl.',
? ? ? ? ? ? ? 6,
? ? ? ? ? ? ? 'Exclusive',
? ? ? ? ? ? ? request,
? ? ? ? ? ? ? LTRIM(TO_CHAR(m.request, '990'))) request,
? ? ? ?m.id1,
? ? ? ?m.id2
? FROM v$session sn, v$lock m
?WHERE (sn.SID = m.SID AND m.request != 0) --存在鎖請求,即被阻塞
? ? OR (sn.SID = m.SID --不存在鎖請求,但是鎖定的對象被其他會話請求鎖定
? ? ? ?AND m.request = 0 AND lmode != 4 AND
? ? ? ?(id1, id2) IN (SELECT s.id1, s.id2
? ? ? ? ? ? ? ? ? ? ? ? ?FROM v$lock s
? ? ? ? ? ? ? ? ? ? ? ? WHERE request != 0
? ? ? ? ? ? ? ? ? ? ? ? ? AND s.id1 = m.id1
? ? ? ? ? ? ? ? ? ? ? ? ? AND s.id2 = m.id2))
?ORDER BY id1, id2, m.request;

?1.3、解鎖代碼
alter system kill session 'sid,SERIAL#';

1.4、查看死鎖信息
SELECT ? ?bs.username "Blocking User", bs.username "DB User",
? ? ? ? ? ws.username "Waiting User", bs.SID "SID", ws.SID "WSID",
? ? ? ? ? bs.serial# "Serial#", bs.sql_address "address",
? ? ? ? ? bs.sql_hash_value "Sql hash", bs.program "Blocking App",
? ? ? ? ? ws.program "Waiting App", bs.machine "Blocking Machine",
? ? ? ? ? ws.machine "Waiting Machine", bs.osuser "Blocking OS User",
? ? ? ? ? ws.osuser "Waiting OS User", bs.serial# "Serial#",
? ? ? ? ? ws.serial# "WSerial#",
? ? ? ? ? DECODE (wk.TYPE,
? ? ? ? ? ? ? ? ? 'MR', 'Media Recovery',
? ? ? ? ? ? ? ? ? 'RT', 'Redo Thread',
? ? ? ? ? ? ? ? ? 'UN', 'USER Name',
? ? ? ? ? ? ? ? ? 'TX', 'Transaction',
? ? ? ? ? ? ? ? ? 'TM', 'DML',
? ? ? ? ? ? ? ? ? 'UL', 'PL/SQL USER LOCK',
? ? ? ? ? ? ? ? ? 'DX', 'Distributed Xaction',
? ? ? ? ? ? ? ? ? 'CF', 'Control FILE',
? ? ? ? ? ? ? ? ? 'IS', 'Instance State',
? ? ? ? ? ? ? ? ? 'FS', 'FILE SET',
? ? ? ? ? ? ? ? ? 'IR', 'Instance Recovery',
? ? ? ? ? ? ? ? ? 'ST', 'Disk SPACE Transaction',
? ? ? ? ? ? ? ? ? 'TS', 'Temp Segment',
? ? ? ? ? ? ? ? ? 'IV', 'Library Cache Invalidation',
? ? ? ? ? ? ? ? ? 'LS', 'LOG START OR Switch',
? ? ? ? ? ? ? ? ? 'RW', 'ROW Wait',
? ? ? ? ? ? ? ? ? 'SQ', 'Sequence Number',
? ? ? ? ? ? ? ? ? 'TE', 'Extend TABLE',
? ? ? ? ? ? ? ? ? 'TT', 'Temp TABLE',
? ? ? ? ? ? ? ? ? wk.TYPE
? ? ? ? ? ? ? ? ?) lock_type,
? ? ? ? ? DECODE (hk.lmode,
? ? ? ? ? ? ? ? ? 0, 'None',
? ? ? ? ? ? ? ? ? 1, 'NULL',
? ? ? ? ? ? ? ? ? 2, 'ROW-S (SS)',
? ? ? ? ? ? ? ? ? 3, 'ROW-X (SX)',
? ? ? ? ? ? ? ? ? 4, 'SHARE',
? ? ? ? ? ? ? ? ? 5, 'S/ROW-X (SSX)',
? ? ? ? ? ? ? ? ? 6, 'EXCLUSIVE',
? ? ? ? ? ? ? ? ? TO_CHAR (hk.lmode)
? ? ? ? ? ? ? ? ?) mode_held,
? ? ? ? ? DECODE (wk.request,
? ? ? ? ? ? ? ? ? 0, 'None',
? ? ? ? ? ? ? ? ? 1, 'NULL',
? ? ? ? ? ? ? ? ? 2, 'ROW-S (SS)',
? ? ? ? ? ? ? ? ? 3, 'ROW-X (SX)',
? ? ? ? ? ? ? ? ? 4, 'SHARE',
? ? ? ? ? ? ? ? ? 5, 'S/ROW-X (SSX)',
? ? ? ? ? ? ? ? ? 6, 'EXCLUSIVE',
? ? ? ? ? ? ? ? ? TO_CHAR (wk.request)
? ? ? ? ? ? ? ? ?) mode_requested,
? ? ? ? ? TO_CHAR (hk.id1) lock_id1, TO_CHAR (hk.id2) lock_id2,
? ? ? ? ? DECODE
? ? ? ? ? ? ?(hk.BLOCK,
? ? ? ? ? ? ? 0, 'NOT Blocking', ? ? ? ? ?/**//* Not blocking any other processes */
? ? ? ? ? ? ? 1, 'Blocking', ? ? ? ? ? ? ?/**//* This lock blocks other processes */
? ? ? ? ? ? ? 2, 'Global', ? ? ? ? ? /**//* This lock is global, so we can't tell */
? ? ? ? ? ? ? TO_CHAR (hk.BLOCK)
? ? ? ? ? ? ?) blocking_others
? ? ?FROM v$lock hk, v$session bs, v$lock wk, v$session ws
? ? WHERE hk.BLOCK = 1
? ? ? AND hk.lmode != 0
? ? ? AND hk.lmode != 1
? ? ? AND wk.request != 0
? ? ? AND wk.TYPE(+) = hk.TYPE
? ? ? AND wk.id1(+) = hk.id1
? ? ? AND wk.id2(+) = hk.id2
? ? ? AND hk.SID = bs.SID(+)
? ? ? AND wk.SID = ws.SID(+)
? ? ? AND (bs.username IS NOT NULL)
? ? ? AND (bs.username <> 'SYSTEM')
? ? ? AND (bs.username <> 'SYS')
ORDER BY 1;

二、MySql? 死鎖如何排查? ? ??

2.1、查看正在進行中的事務

SELECT * FROM information_schema.INNODB_TRX

2.2、查看正在鎖的事務

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;


2.3、查看等待鎖的事務

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
?

2.4、查詢是否鎖表

SHOW OPEN TABLES where In_use > 0;

2.5、查詢最近死鎖的日志

show engine innodb status

2.6、查看當前正在進行中的進程

show processlist
// 也可以使用
SELECT * FROM information_schema.INNODB_TRX;

2.7、解除死鎖

kill
?


?


?

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

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

相關文章

Arduino - 按鈕 - 長按短按

Arduino - Button - Long Press Short Press Arduino - 按鈕 - 長按短按 Arduino - Button - Long Press Short Press We will learn: 我們將學習&#xff1a; How to detect the button’s short press 如何檢測按鈕的短按How to detect the button’s long press 如何檢測…

重大進展!微信支付收款碼全場景接入銀聯網絡

據中國銀聯6月19日消息&#xff0c;近日&#xff0c;銀聯網絡迎來微信支付收款碼場景的全面接入&#xff0c;推動條碼支付互聯互通取得新進展&#xff0c;為境內外廣大消費者提供更多支付選擇、更好支付體驗。 2024年6月&#xff0c;伴隨微信支付經營收款碼的開放&#xff0c;微…

Docker部署Nginx+Keepalived

# 創建掛載路徑 mkdir /data/nginx_keep/nginx/conf -p mkdir /data/nginx_keep/keepalived/vim nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }http {incl…

Rust: duckdb和polars讀csv文件比較

一、文件準備 樣本內容&#xff0c;N行9列的csv標準格式&#xff0c;有字符串&#xff0c;有浮點數&#xff0c;有整型。 有兩個csv文件&#xff0c;一個大約是2.1萬行&#xff1b;一個是64萬行。 二、toml文件 [package] name "my_duckdb" version "0.1.0&…

opencv簡單小項目

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺和機器學習軟件庫&#xff0c;它提供了大量的圖像和視頻處理功能。使用OpenCV可以開發各種簡單的小項目&#xff0c;例如&#xff1a; 圖像基本操作&#xff1a; 讀取和顯示圖像。調整…

弱監督學習

弱監督學習&#xff08;Weak Supervision&#xff09;是一種利用不完全、不精確或噪聲數據進行模型訓練的方法。以下是一些常用的弱監督方法及其原理&#xff1a; 1. 數據增強&#xff08;Data Augmentation&#xff09; 原理&#xff1a; 數據增強是一種通過增加訓練數據的多…

區塊鏈的歷史和發展:從比特幣到以太坊

想象一下&#xff0c;你住在一個小鎮上&#xff0c;每個人都有一個大賬本&#xff0c;記錄著所有的交易。這個賬本很神奇&#xff0c;每當有人買賣東西&#xff0c;大家都會在自己的賬本上記一筆&#xff0c;確保每個人的賬本都是一致的。這就是區塊鏈的基本思想。而區塊鏈的故…

HG/T 5838-2021金屬骨架發泡橡膠復合密封板檢測

金屬骨架發泡橡膠復合密封板是指工作溫度范圍-40&#xff5e;140℃&#xff0c;峰值溫度為150℃條件下使用的金屬骨架發泡密封板。 HG/T 5838-2021金屬骨架發泡橡膠復合密封板檢測項目&#xff1a; 測試項目 測試標準 外觀 HG/T 5838 厚度 HG/T 5838 壓縮性能 GB/T 206…

VSCode安裝OpenImageDebugger

VSCode安裝OpenImageDebugger 1. 官網2. 編譯2.1 依賴項2.2 編譯 OpenImageDebugger2.3 配置 GDB 和 LLDB 3. 驗證安裝是否成功 1. 官網 下載路徑&#xff1a;OpenImageDebugger 2. 編譯 2.1 依賴項 官網上描述&#xff0c; Qt 5.15.1Python 3.10.12 這兩個其實配置并不需…

【好物推薦】給大家安利一個liux運維全能腳本工具箱

前幾天在開源社區沖浪的時候無意間逛到一個部署帖&#xff0c;里面提到了一個腳本&#xff0c;讓我眼前一亮。 科技Lion的Shell腳本&#xff01;大家趕緊去體驗學習一下&#xff0c;感覺寫的還是不錯的。 該工具是一款全能腳本工具箱&#xff0c;使用shell腳本編寫。專為Linux服…

Jenkins多stage共享同一變量方式

在第一個stage中為這個變量賦值&#xff0c;在其它stage中使用這個變量 import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths import java.nio.file.StandardCopyOption import groovy.json.JsonOutput import groovy.json.JsonSlurper// 共享的…

圖解HTTP筆記整理(前六章)

圖解HTTP 第一章 web使用HTTP &#xff08;HyperText Transfer Protocol&#xff0c;超文本傳輸協議&#xff09;協議作文規范&#xff0c;完成從客戶端到服務器端等一系列運作流程。 協議&#xff1a;計算機與網絡設備要相互通信&#xff0c;雙方就必須基于相同的方法。比如…

【論文閱讀】--Popup-Plots: Warping Temporal Data Visualization

彈出圖&#xff1a;扭曲時態數據可視化 摘要1 引言2 相關工作3 彈出圖3.1 橢球模型3.1.1 水平軌跡3.1.2 垂直軌跡3.1.3 組合軌跡 3.2 視覺映射與交互 4 實施5 結果6 評估7 討論8 結論和未來工作致謝參考文獻 期刊: IEEE Trans. Vis. Comput. Graph.&#xff08;發表日期: 2019&…

【TS】Typescript 中,什么是函數重載

在JavaScript中&#xff0c;傳統上并沒有直接支持函數重載&#xff08;Function Overloading&#xff09;的概念&#xff0c;這是許多其他面向對象編程語言&#xff08;如Java、C#、C等&#xff09;的一個特性。函數重載意味著可以使用相同的函數名但不同的參數列表&#xff08…

1.3.數據的表示

定點數 原碼 最高位是符號位&#xff0c;0表示正號&#xff0c;1表示負號&#xff0c;其余的n-1位表示數值的絕對值。 數值0的原碼表示有兩種形式&#xff1a; [0]原0 0000000 [-0]原1 0000000 例&#xff1a;1010 最高位為1表示這是一個負數&#xff0c; 其它三位 010…

HQChart使用教程30-K線圖如何對接第3方數據41-分鐘K線疊加股票增量更新

HQChart使用教程30-K線圖如何對接第3方數據40-日K疊加股票增量更新 疊加股票疊加分鐘K線更新Request 字段說明Data.symbol 協議截圖返回json數據結構overlaydata HQChart代碼地址交流 疊加股票 示例地址:https://jones2000.github.io/HQChart/webhqchart.demo/samples/kline_i…

可以一鍵生成熱點營銷視頻的工具,建議收藏

在當今的商業環境中&#xff0c;熱點營銷已經成為了一種非常重要的營銷策略。那么&#xff0c;什么是熱點營銷呢&#xff1f;又怎么做熱點營銷視頻呢&#xff1f; 最近高考成績慢慢公布了&#xff0c;領導讓結合“高考成績公布”這個熱點&#xff0c;做一個關于企業或產品的營銷…

運用 Offer 管理來提高候選人感受的關鍵點

一些公司不遺余力地為應聘者提供一流的感受&#xff0c;通過建立個性化的求職網站、簡單的處理流程和合作的面試流程。然而&#xff0c;由于Offer管理緩慢笨拙&#xff0c;所有這些好工作都可能失敗。 如果申請人想等幾天才能得到你的錄取通知書&#xff0c;而你的錄取通知書必…

鴻蒙NEXT開發:工具常用命令—install

安裝三方庫。 命令格式 ohpm install [options] [[<group>/]<pkg>[<version> | tag:<tag>]] ... ohpm install [options] <folder> ohpm install [options] <har file> alias: i 說明 group&#xff1a;三方庫的命名空間&#xff0c;可…

sys.stdin對象——實現標準輸入

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 語法參考 sys.stdin是一個標準化輸入對象&#xff0c;可以連續輸入或讀入文件所有內容&#xff0c;不結束&#xff0c;不能直接使用。輸入完成后&am…