oracle表為什么老是被鎖 oracle數(shù)據(jù)庫鎖表怎么解決?
oracle數(shù)據(jù)庫鎖表怎么解決?首先你要知道表鎖住了是不是正常鎖?因為任何DML語句都會對表加鎖。你要先查一下是那個會話那個sql鎖住了表,有可能這是正常業(yè)務需求,不建議隨便KILLsession,如
oracle數(shù)據(jù)庫鎖表怎么解決?
首先你要知道表鎖住了是不是正常鎖?因為任何DML語句都會對表加鎖。你要先查一下是那個會話那個sql鎖住了表,有可能這是正常業(yè)務需求,不建議隨便KILLsession,如果這個鎖表是正常業(yè)務你把sessionkill掉了會影響業(yè)務的。建議先查原因再做決定。(1)鎖表查詢的代碼有以下的形式:selectcount(*)fromv$locked_objectselect*fromv$locked_object(2)查看哪個表被鎖selectb.owner,b.object_name,a.session_id,a.locked_modefromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id(3)查看是哪個session引起的selectb.username,b.sid,b.serial#,logon_timefromv$locked_objecta,v$sessionbwherea.session_id=b.sidorderbyb.logon_time(4)查看是哪個sql引起的selectb.username,b.sid,b.serial#,c.*fromv$locked_objecta,v$sessionb,v$sqlcwherea.session_id=b.sidandb.SQL_ID=c.sql_idandc.sql_id=""orderbyb.logon_time(5)殺掉對應進程執(zhí)行命令:altersystemkillsession"1025,41"其中1025為sid,41為serial#.
平時使用oracle時,為什么會鎖表?
簡單地說,鎖是為了保證數(shù)據(jù)的一致性,鎖不止存在于oracle,其他數(shù)據(jù)庫一樣有,只不過機制上可能大相徑庭。至于什么樣的操作會鎖表,其實鎖的種類很多,你所說的鎖表大概說的是行級鎖——也就是事務鎖吧。比如一個update語句,被update的行上會有鎖——能阻塞其他事務對這些行進行修改的鎖,雖然這時候這張表上也有表級鎖,但這個表級鎖并不影響其他事務對表中的其他行進行修改,只是會阻礙對這張表的DDL操作。