Oracle資料庫被鎖表後,如何解決!

2022-06-01 05:51:11 字數 1321 閱讀 3270

今天本來要修改測試庫程式版本的,發現被卡住了。一直無法完成,後來發現是表被鎖死了。然後通過網上網友們帖子的幫助,成功的解決了問題。這裡記錄一下:

1.首先檢視當前資料庫中,哪些表被鎖住了,找到對應的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;

查詢結果:

owner :資料表的所有者使用者

object_name: 被鎖住的表名

session_id: 會話id

locked_mode: 鎖級別

鎖級別分為6級:

1級鎖有:select

2級鎖有:select for update,lock for update,lock row share

3級鎖有:insert, update, delete, lock row exclusive

4級鎖有:create index, lock share

5級鎖有:lock share row exclusive 

6級鎖有:alter table, drop table, drop index, truncate table, lock exclusive

2.執行該語句,檢視會話id

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;

執行結果:

通過剛才找到的session_id找到次查詢結果的sid

3.殺會話

alter system kill session 'sid,serial#';

例子:alter system kill session '20,30153'; -----這個是我剛才殺死會話前的執行語句

如果有ora-00031錯誤,則在後面加immediate;

alter system kill session '20,30153' immediate;

注:注意確定好會話id

Oracle資料庫表被鎖

1 資料庫表被鎖的現象 在運算元據庫時,有的時候我們會很突然的遇到資料庫報下面這個錯誤 sql view plain copy ora 00054 resource busy andacquire with nowait specified 第乙個可能的原因是在lock table 和select ...

Oracle資料庫表被鎖了,如何解鎖

1.首先檢視資料庫中哪些表被鎖了,找到session id 使用sql 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.o...

Oracle資料庫表被鎖與解鎖

本人小菜鳥,今天在專案中遇到了乙個令我費解的問題,就是我之前寫的運算元據的方法全部都不能用了,例如儲存 修改 刪除全部都不能用了 打斷點進去一步一步走發現在運算元據的時候出的問題,後台也不會報錯,糾結了好長時間啊,中午吃飯的時候討論到這個問題,大神一語道破其中奧妙啊,他說可能是資料庫表鎖死啦。哎呦喂...