欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

oracle數(shù)據(jù)庫鎖表的原因及解決方法

 更新時間:2023年11月28日 11:12:33   作者:Jimmy的大長腿  
出現(xiàn)鎖表的情況很多種,但是大部分情況都是更新表,然后并沒有提交,導(dǎo)致數(shù)據(jù)庫的表被鎖的情況,處理方式也比較簡單,本文小編給大家介紹了oracle數(shù)據(jù)庫鎖表的原因及解決方法,需要的朋友可以參考下

1、oracle數(shù)據(jù)庫表在操作insert  update 、delete 時忘記提交事務(wù)或者回滾,就會發(fā)生鎖表 

2、鎖表的原理是 數(shù)據(jù)庫使用獨占式封鎖機(jī)制,當(dāng)執(zhí)行上面的語句時,對表進(jìn)行鎖住,直到發(fā)生commite 或者 回滾 或者退出數(shù)據(jù)庫用戶 

鎖表的原因 

第一、 A程序執(zhí)行了對 tableA 的 insert ,并還未 commite時,B程序也對tableA 進(jìn)行insert 則此時會發(fā)生資源正忙的異常 就是鎖表

第二、鎖表常發(fā)生于并發(fā)而不是并行(并行時,一個線程操作數(shù)據(jù)庫時,另一個線程是不能操作數(shù)據(jù)庫的,cpu 和i/o 分配原則)

當(dāng)發(fā)生鎖表后,我們應(yīng)當(dāng)kill 掉鎖表的sql進(jìn)程,這樣就可以解除鎖表;

解決方法:

第一步:找出被鎖表對應(yīng)的session_id

SELECT B.OWNER, B.OBJECT_NAME, A.SESSION_ID, A.LOCKED_MODE
  FROM V$LOCKED_OBJECT A, DBA_OBJECTS B
 WHERE B.OBJECT_ID = A.OBJECT_ID;

第二步:根據(jù)上一步查出來的session_id找出對應(yīng)的SERIAL#

SELECT B.USERNAME, B.SID, B.SERIAL#, LOGON_TIME
  FROM V$LOCKED_OBJECT A, V$SESSION B
 WHERE A.SESSION_ID = B.SID
 ORDER BY B.LOGON_TIME;

第三步(解鎖):殺掉對應(yīng)的進(jìn)程

ALTER SYSTEM KILL SESSION 'session_id,SERIAL#';

第四步:完事!

到此這篇關(guān)于oracle數(shù)據(jù)庫鎖表的原因及解決方法的文章就介紹到這了,更多相關(guān)oracle數(shù)據(jù)庫鎖表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論