美文网首页
Oracle:杀死死锁进程

Oracle:杀死死锁进程

作者: tonyZj | 来源:发表于2017-03-10 10:58 被阅读0次

    模拟死锁现象

    • 利用PL/SQL Developer工具可以很容易模拟死锁现象。用同一个数据库的同一个用户登录2个PL/SQL Developer。
    • 首先,在其中一个PL/SQL Developer随便对数据库的表执行一个更新操作,不要提交,状态为“待提交”.
    • 然后,在另一个PL/SQL Developer执行同样的操作,此时这个操作会等待前面的事务提交之后才会执行,状态为“等待”
    • 对同一条记录进行更新操作就会造成行死锁现象,而对于不同的记录进行更新操作是不会造成死锁现象的。因为Oracle的锁机制力度比较细,实现了行级锁机制。

    处理死锁进程

    • 查看被锁住的表
    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;
    
    • 查看锁住表的用户
    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;
    
    • 处理死锁进程
    alter system kill session 'SID,SERIAL#';
    
    • 如果有ora-00031错误,则在后面加immediate
    alter system kill session ' SID,SERIAL#' immediate;
    

    相关文章

      网友评论

          本文标题:Oracle:杀死死锁进程

          本文链接:https://www.haomeiwen.com/subject/caengttx.html