首先你要知道表鎖住了是不是正常鎖?因為任何DML語句都會對表加鎖。
站在用戶的角度思考問題,與客戶深入溝通,找到甘肅網站設計與甘肅網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都網站設計、成都做網站、企業官網、英文網站、手機端網站、網站推廣、域名注冊、雅安服務器托管、企業郵箱。業務覆蓋甘肅地區。
你要先查一下是那個會話那個sql鎖住了表,有可能這是正常業務需求,不建議隨便KILL session,如果這個鎖表是正常業務你把session kill掉了會影響業務的。
建議先查原因再做決定。
(1)鎖表查詢的代碼有以下的形式:
select count(*) from v$locked_object;
select * from v$locked_object;
(2)查看哪個表被鎖
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;
(3)查看是哪個session引起的
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;
(4)查看是哪個sql引起的
select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id = b.sid
and b.SQL_ID = c.sql_id and c.sql_id = ''
order by b.logon_time;
(5)殺掉對應進程
執行命令:alter system kill session'1025,41';
其中1025為sid,41為serial#.
查詢鎖表
select object_name, machine, 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;
解表
ALTER system kill session 'sid, serial#';
ALTER system kill session '256, 34034';
一般先查詢并找到被鎖定的表,解鎖代碼如下:
--釋放SESSION?SQL:?
--alter?system?kill?session?'sid,?serial#';?
ALTER?system?kill?session?'23,?1647';
在對指定表做append操作,其他再做truncate時候,會產生鎖表,如下驗證步驟,
1、創建測試表,
create table test_lock(id number, value varchar2(200));
2、執行append語句;并且不做提交,insert /*+append*/ into test_lock values(1,1);
3、再次執行清表語句,truncate table test_lock;報鎖表錯誤,
4、查看鎖表語句,發現被鎖表,
select b.object_name, t.*
from v$locked_object t, user_objects b
where t.object_id = b.object_id
當前文章:oracle鎖表怎么辦,oracle如何鎖住表
當前URL:http://vcdvsql.cn/article22/dsdgcjc.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、動態網站、網站內鏈、微信小程序、網站設計、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯