国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle鎖表解決方法的詳細(xì)記錄

瀏覽:115日期:2023-03-12 15:25:01
目錄
  • 前言
  • 解決方法如下:
  • 總結(jié)

前言

鎖表或鎖超時相信大家都不陌生,經(jīng)常發(fā)生在DML語句中,產(chǎn)生的原因就是數(shù)據(jù)庫的獨占式封鎖機(jī)制,當(dāng)執(zhí)行DML語句時對表或行數(shù)據(jù)進(jìn)行鎖住,直到事務(wù)提交或回滾或者強(qiáng)制結(jié)束當(dāng)前會話。

對于我們的應(yīng)用系統(tǒng)而言鎖表大概率會發(fā)生在SQL執(zhí)行慢并且沒有超時的地方(一條SQL由于某種原因(Spoon工具做數(shù)據(jù)抽取與推送)一直執(zhí)行不成功并且一直不釋放資源)因此寫出高效率SQL也尤為重要!還有另外情況也會發(fā)生鎖表,就是高并發(fā)場景,高并發(fā)會帶來的問題就是Spring事務(wù)會造成數(shù)據(jù)庫事務(wù)未提交產(chǎn)生死鎖(當(dāng)前事務(wù)等待其他事務(wù)釋放鎖資源)!從而拋出異常java.sql.SQLException: Lock wait timeout exceeded;。

那么如何解決鎖表或鎖超時呢?臨時性解決方案就是找出鎖資源競爭的表或語句,直接結(jié)束當(dāng)前會話或sesstion,強(qiáng)制釋放鎖資源。例如

解決方法如下:

1、session1修改某條數(shù)據(jù)但是不提交事務(wù),session2查詢未提交事務(wù)的那條記錄

2、session2嘗試修改

我們可以看到修改未提交事務(wù)的記錄會處于一直等待狀態(tài),直到對方釋放鎖資源或強(qiáng)制關(guān)閉session1。這里也說明了Oracle做到了行級鎖!

這里只是簡單的模擬了出現(xiàn)鎖表情況,可以一眼看出就是session1導(dǎo)致的鎖表。實際開發(fā)中遇到這種情況一般都是使用SQL直接查出鎖資源競爭的表或語句然后進(jìn)行資源的強(qiáng)制釋放!!

3、session3查詢競爭資源的表或語句,強(qiáng)制釋放資源

-- 查詢未提交事務(wù)的session信息,注意執(zhí)行以下SQL,用戶需要有DBA權(quán)限才行SELECT    L.SESSION_ID,    S.SERIAL#,    L.LOCKED_MODE AS 鎖模式,    L.ORACLE_USERNAME AS 所有者,    L.OS_USER_NAME AS 登錄系統(tǒng)用戶名,    S.MACHINE AS 系統(tǒng)名,    S.TERMINAL AS 終端用戶名,    O.OBJECT_NAME AS 被鎖表對象名,    S.LOGON_TIME AS 登錄數(shù)據(jù)庫時間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_IDWHERE 1 = 1

查詢結(jié)果如下

對我們強(qiáng)制釋放資源有用的只有前面兩個字段,例如

-- 強(qiáng)制 結(jié)束/kill 鎖表會話語法ALTER SYSTEM KILL SESSION "SESSION_ID, SERIAL#";-- 強(qiáng)制殺死session1,讓session2可以修改id=5的那條記錄ALTER SYSTEM KILL SESSION "34, 111";

強(qiáng)制殺死session1后,注意觀察session2的執(zhí)行情況!我們會發(fā)現(xiàn)session2的等待會立即終止并執(zhí)行!相信小伙伴們都有一個疑惑,session_id有29和34,如何確定他們屬于session1還是session2,保證殺死的是session1讓session2成功執(zhí)行DML語句?

其實也很簡單,這里的判斷方式就是session1執(zhí)行更新但不提交事務(wù),可先用以上SQL查詢未提交事務(wù)的session信息,此時查到的就是session1的信息。

總結(jié)

到此這篇關(guān)于Oracle鎖表解決的文章就介紹到這了,更多相關(guān)Oracle鎖表解決內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: Oracle
主站蜘蛛池模板: 99国产精品久久久久久久日本 | 亚洲成人福利网站 | 欧美人与zoxxxx另类9 | 亚洲国产精品综合久久久 | 精品午夜寂寞影院在线观看 | 欧美日韩国产片 | 国产欧美成人一区二区三区 | 久久久久久在线 | 一级a做爰片欧欧美毛片4 | 偷拍精品视频一区二区三区 | 全部在线美女网站免费观看 | 久久青草国产手机看片福利盒子 | 精品国产亚洲人成在线 | 在线观看一级毛片 | 狠狠色丁香久久婷婷综合_中 | 久草福利资源 | 精品亚洲福利一区二区 | 国产激情一区二区三区四区 | 亚洲精品视频观看 | 泰国情欲片寂寞的寡妇在线观看 | 全部免费毛片在线 | 国产男女乱淫真视频全程播放 | 大陆孕妇孕交视频自拍 | 9lporm自拍视频在线 | 免费高清国产 | 91香蕉成人 | 午夜三级理论在线观看视频 | 中国女警察一级毛片视频 | 三级视频在线观看 | 国产99在线播放 | 日韩精品在线一区 | 美女黄色影院 | 538在线视频二三区视视频 | 中文字幕在线日韩 | 国内自拍第一页 | 老外黑人欧美一级毛片 | 国产精品观看 | 欧美一级毛片特黄黄 | 国产亚洲欧美ai在线看片 | 91香蕉国产观看免费人人 | 亚洲羞羞裸色私人影院 |