作为一个没有啥工作经验的菜鸟怎么样去判断什么样的锁要去人工解决

解决方案 »

  1.   

    领导催你的时候需要人工干预.
    否则大多数情况,oracle都能够自我解决.
      

  2.   


    /*模拟死锁产生的情景
    drop table  emp; --if exists?
    create table emp(
    empid number(5),
    empname varchar2(100),
    empage number(5)
    );
    */
    truncate table emp;
    insert into emp values(1,'chenzw',27);
    insert into emp values(2,'chenzz',27);
    commit;--sqlplus窗口A  为empid为1的表加排他锁
    update emp set empage=empage+1 where empid=1;
    --sqlplus窗口B  为empid为2的表加排他锁
    update emp set empage=empage+2 where empid=2;--sqlplus窗口A  检测到死锁
    update emp set empage=empage+1 where empid=2;
    --sqlplus窗口B  检测到死锁
    update emp set empage=empage+2 where empid=1;
    --在窗口A上面运行的示例程序如下:SQL> truncate table emp;表被截断。SQL> insert into emp values(1,'chenzw',27);已创建 1 行。SQL> insert into emp values(2,'chenzz',27);已创建 1 行。SQL> commit;提交完成。SQL> update emp set empage=empage+1 where empid=1;已更新 1 行。SQL> update emp set empage=empage+1 where empid=2;
    update emp set empage=empage+1 where empid=2
           *
    第 1 行出现错误:
    ORA-00060: 等待资源时检测到死锁
      

  3.   

    http://blog.csdn.net/ziwen00/article/details/6331037前后有几篇文章是介绍死锁的产生以及怎么杀死锁..找一篇不错的文章然后从头仔细阅读一遍,这个就永远不是问题了.