久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

數(shù)據(jù)庫中v$lockv和$locked

152次閱讀
沒有評論

共計 1870 個字符,預(yù)計需要花費 5 分鐘才能閱讀完成。

這篇文章給大家分享的是有關(guān)數(shù)據(jù)庫中 v$lockv 和 $locked_object 的區(qū)別有哪些的內(nèi)容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

一、引言
工作中有次修改表 sj_affair 中的數(shù)據(jù),需要禁用該表上的觸發(fā)器。結(jié)果無法禁用,報如下錯誤:
ORA-00054: resource busy and acquire with NOWAIT specified
很明顯,是該表被鎖定了,于是打算 kill 掉鎖住該表的會話。步驟如下:

1. 查出鎖住該表的會話 id,serial#

SELECT o.object_name,s.sid, s.serial#
  FROM v$locked_object l, dba_objects o, v$session s
  WHERE l.object_id = o.object_id
  AND l.session_id = s.sid
  AND o.object_name= SJ_AFFAIR
   
2.kill 掉該會話
alter system kill session sid, serial#

kill 掉會話之后再次查詢,發(fā)現(xiàn)該表上已經(jīng)沒有鎖了。于是再次試圖禁用觸發(fā)器,結(jié)果奇怪了,還是無法禁用。
是不是鎖又恢復(fù)了呢?再次查詢,發(fā)現(xiàn)沒有鎖。這是為什么呢?
在網(wǎng)上搜了很多,發(fā)現(xiàn)一條有用的信息,作者查詢鎖用的是 v$lock 視圖,而不是 v$locked_object 視圖。改成查詢 v$locd 視圖:

SELECT o.object_name,s.sid, s.serial#
  FROM v$lock l, dba_objects o, v$session s
  WHERE l.id1 = o.object_id
  AND l.sid = s.sid
  AND o.object_name= SJ_AFFAIR
   
然后再次查詢,發(fā)現(xiàn) SJ_AFFAIR 上居然還有鎖。于是再次 kill,然后禁用觸發(fā)器就成功了。

二、V$LOCK 和 V$LOCKED_OBJECT
查詢鎖表都會用到 V$LOCK 和 V$LOCKED_OBJECT, 但這兩者不是相同的。我們先看看它們各自的主要字段:
1.v$lock
  sid:  會話 SID,通常與 v$session 關(guān)聯(lián)。
  type:  鎖類型,TM 表示表鎖或 DML 鎖,TX 表示行鎖或事務(wù)鎖,UL 表示用戶鎖。我們主要關(guān)注 TX 和 TM 兩種鎖, 其它均為系統(tǒng)鎖,會很快自動釋放,不用關(guān)注。  行鎖不會單獨存,行級鎖之前需要先加表級共享鎖。
  lmode:  會話保持的鎖的模式。
 0=None;1=Null;2=Row-S (SS, 行級共享鎖,其他對象只能查詢這些數(shù)據(jù)行);3=Row-X (SX, 行級排它鎖, 在提交前不允許做 DML 操作);4=Share(共享鎖);5=S/Row-X (SSX, 共享行級排它鎖);6=Exclusive(排它鎖)
   
ID1,ID2: ID1,ID2 的取值含義根據(jù) type 的取值而有所不同,對于 TM 鎖 ID1 表示被鎖定表的 object_id 可以和 dba_objects 視圖關(guān)聯(lián)取得具體表信息,ID2 值為 0;對于 TX 鎖,ID1 以十進制數(shù)值表示該事務(wù)所占用的回滾段號和事務(wù)槽 slot number 號, 其組形式: 0xRRRRSSSS,RRRR=RBS/UNDO NUMBER,SSSS=SLOT NUMBER,ID2 以十進制數(shù)值表示環(huán)繞 wrap 的次數(shù),即事務(wù)槽被重用的次數(shù)
   
2.V$LOCKED_OBJECT
  session_id:  會話 id。通常與 v$session 關(guān)聯(lián)。
  object_id:  被鎖對象標識。通常與 dba_objects 關(guān)聯(lián)。
  oracle_username:  登錄 oracle 用戶名。
  os_user_name:  電腦用戶名如:Administrator
  locked_mode:  會話保持的鎖的模式。   
   
三、兩者的區(qū)別
1.V$LOCKED_OBJECT 只能報發(fā)生等待的表級鎖, 不能報發(fā)生等待的行級鎖。
注:這句話是網(wǎng)上別人說的,暫時未驗證,需慎重考慮。但是從我遇到的問題來看,似乎是正確的。只是我的問題已經(jīng)無法重現(xiàn),也就失去了驗證它的機會。

2.v$locked_object 包含的是當前 DB 中被鎖住的 OBJECT,而 v$lock 不僅包含用戶的,還包括系統(tǒng)被鎖住的 object,即:V$LOCK v$locked_object

感謝各位的閱讀!關(guān)于“數(shù)據(jù)庫中 v$lockv 和 $locked_object 的區(qū)別有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-18發(fā)表,共計1870字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 闽清县| 施甸县| 徐汇区| 桃江县| 宜阳县| 岗巴县| 长垣县| 长海县| 满洲里市| 崇阳县| 星子县| 青河县| 南漳县| 平潭县| 镇雄县| 固原市| 泰安市| 武乡县| 昭觉县| 西乌珠穆沁旗| 浦县| 大城县| 内黄县| 南靖县| 冷水江市| 贺州市| 惠东县| 永兴县| 青铜峡市| 崇信县| 琼中| 开鲁县| 奇台县| 萨迦县| 怀化市| 德州市| 克拉玛依市| 景谷| 松阳县| 大城县| 寿宁县|