Oracle鎖表問(wèn)題的解決方法
一、問(wèn)題復(fù)現(xiàn)
1、session1修改aabb表的B字段為迪迦奧特曼,但是不提交該事務(wù)

2、session2也修改這行的這個(gè)字段

發(fā)現(xiàn)該字段的執(zhí)行時(shí)間一直停滯,無(wú)法執(zhí)行。兩個(gè)session會(huì)相互爭(zhēng)搶 ,一直無(wú)法執(zhí)行,進(jìn)而導(dǎo)致系統(tǒng)卡頓崩潰

二、解決方法
1、查詢(xún)競(jìng)爭(zhēng)資源的表或語(yǔ)句
運(yùn)行一下語(yǔ)句查詢(xún)鎖表的語(yǔ)句。
-- 查詢(xún)未提交事務(wù)的session信息,注意執(zhí)行以下SQL,用戶(hù)需要有DBA權(quán)限才行
SELECT
L.SESSION_ID,
S.SERIAL#,
L.LOCKED_MODE AS 鎖模式,
L.ORACLE_USERNAME AS 所有者,
L.OS_USER_NAME AS 登錄系統(tǒng)用戶(hù)名,
S.MACHINE AS 系統(tǒng)名,
S.TERMINAL AS 終端用戶(hù)名,
O.OBJECT_NAME AS 被鎖表對(duì)象名,
S.LOGON_TIME AS 登錄數(shù)據(jù)庫(kù)時(shí)間
FROM V$LOCKED_OBJECT L
INNER JOIN ALL_OBJECTS O ON O.OBJECT_ID = L.OBJECT_ID
INNER JOIN V$SESSION S ON S.SID = L.SESSION_ID
WHERE 1 = 1查詢(xún)結(jié)果如下

2、強(qiáng)制釋放資源
運(yùn)行一下語(yǔ)句可以殺死對(duì)應(yīng)的鎖表進(jìn)程
通用語(yǔ)句:強(qiáng)制 結(jié)束/kill 鎖表會(huì)話(huà)語(yǔ)法 ALTER SYSTEM KILL SESSION 'SESSION_ID, SERIAL#'; 示例語(yǔ)句:強(qiáng)制殺死session1,讓session2可以修改a = '3228730285638861'的那條記錄 ALTER SYSTEM KILL SESSION '4984, 28973';
殺死session1的進(jìn)程后,session2順利執(zhí)行。


以上就是Oracle鎖表問(wèn)題的解決方法的詳細(xì)內(nèi)容,更多關(guān)于Oracle鎖表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Navicat Premium工具將oracle數(shù)據(jù)庫(kù)遷移到MySQL
最近的業(yè)務(wù)項(xiàng)目需求,因此總結(jié)遇到的問(wèn)題。使用Navicat Premium工具將Oralce數(shù)據(jù)庫(kù)遷移到MySQL,本文通過(guò)圖文的形式給大家詳細(xì)介紹,感興趣的朋友跟隨小編一起看看吧2021-05-05
Oracle數(shù)據(jù)庫(kù)下載及安裝圖文操作步驟
本文將介紹Oracle數(shù)據(jù)庫(kù)下載及安裝等一系列步驟,需要了解的朋友可以參考下2012-12-12
Oracle停止數(shù)據(jù)泵導(dǎo)入數(shù)據(jù)的方法詳解
Oracle數(shù)據(jù)庫(kù)在使用的過(guò)程中常常會(huì)遇到這樣或那樣的問(wèn)題,而這些問(wèn)題常常又使我們感到很困惑,下面這篇文章主要給大家介紹了關(guān)于Oracle停止數(shù)據(jù)泵導(dǎo)入數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-06-06
oracle查看被鎖的表和被鎖的進(jìn)程以及殺掉這個(gè)進(jìn)程
本節(jié)主要介紹了oracle如何查看被鎖的表和被鎖的進(jìn)程以及殺掉這個(gè)進(jìn)程,需要的朋友可以參考下2014-08-08
oracle分區(qū)表之hash分區(qū)表的使用及擴(kuò)展
Hash分區(qū)是Oracle實(shí)現(xiàn)表分區(qū)的三種基本分區(qū)方式之一。對(duì)于那些無(wú)法有效劃分分區(qū)范圍的大表,或者出于某些特殊考慮的設(shè)計(jì),需要使用Hash分區(qū),下面介紹使用方法2014-01-01

