日期:2014-05-17 浏览次数:20870 次
/*模拟死锁产生的情景 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: 等待资源时检测到死锁