oracle表為什么老是被鎖 oracle數(shù)據(jù)庫鎖表怎么解決?
oracle數(shù)據(jù)庫鎖表怎么解決?首先你要知道表鎖住了是不是正常鎖?因?yàn)槿魏蜠ML語句都會對表加鎖。你要先查一下是那個會話那個sql鎖住了表,有可能這是正常業(yè)務(wù)需求,不建議隨便KILLsession,如
oracle數(shù)據(jù)庫鎖表怎么解決?
首先你要知道表鎖住了是不是正常鎖?因?yàn)槿魏蜠ML語句都會對表加鎖。你要先查一下是那個會話那個sql鎖住了表,有可能這是正常業(yè)務(wù)需求,不建議隨便KILLsession,如果這個鎖表是正常業(yè)務(wù)你把sessionkill掉了會影響業(yè)務(wù)的。建議先查原因再做決定。(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)殺掉對應(yīng)進(jìn)程執(zhí)行命令:altersystemkillsession"1025,41"其中1025為sid,41為serial#.
平時使用oracle時,為什么會鎖表?
簡單地說,鎖是為了保證數(shù)據(jù)的一致性,鎖不止存在于oracle,其他數(shù)據(jù)庫一樣有,只不過機(jī)制上可能大相徑庭。至于什么樣的操作會鎖表,其實(shí)鎖的種類很多,你所說的鎖表大概說的是行級鎖——也就是事務(wù)鎖吧。比如一個update語句,被update的行上會有鎖——能阻塞其他事務(wù)對這些行進(jìn)行修改的鎖,雖然這時候這張表上也有表級鎖,但這個表級鎖并不影響其他事務(wù)對表中的其他行進(jìn)行修改,只是會阻礙對這張表的DDL操作。