五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

Oracle鎖表解決方法的詳細記錄

發(fā)布日期:2022-07-15 19:32 | 文章來源:源碼中國

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

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

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

解決方法如下:

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

2、session2嘗試修改

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

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

3、session3查詢競爭資源的表或語句,強制釋放資源

-- 查詢未提交事務的session信息,注意執(zhí)行以下SQL,用戶需要有DBA權限才行
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ù)據庫時間
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

查詢結果如下

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

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

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

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

總結

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

香港服務器租用

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部