事务和锁定-通过结束会话方式解除死锁

--模拟死锁
/*
查锁和杀锁,使用
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';
*/
set linesize 200;
SELECT T2.USERNAME,
	   T2.SID,
	   T2.SERIAL#,   
	   T2.LOGON_TIME,
	   T3.SQL_TEXT
FROM V$LOCKED_OBJECT T1,V$SESSION T2,V$SQLTEXT T3
WHERE T1.SESSION_ID=T2.SID AND T2.SQL_ADDRESS=T3.ADDRESS
ORDER BY T2.LOGON_TIME;

ALTER SYSTEM KILL SESSION 'SID,SERIAL#';

--实例程序的执行结果如下:

SQL> set linesize 200;
SQL> SELECT T2.USERNAME,
  2      T2.SID,
  3      T2.SERIAL#,   
  4      T2.LOGON_TIME,
  5      T3.SQL_TEXT
  6  FROM V$LOCKED_OBJECT T1,V$SESSION T2,V$SQLTEXT T3
  7  WHERE T1.SESSION_ID=T2.SID AND T2.SQL_ADDRESS=T3.ADDRESS
  8  ORDER BY T2.LOGON_TIME;

USERNAME                              SID    SERIAL# LOGON_TIME     SQL_TEXT
------------------------------ ---------- ---------- -------------- --------------------------------
XAXNB                                 137        481 17-4月 -11     update emp set empname='chenzzaz' where empid=2

SQL> alter system kill session '137,481';

系统已更改

--对应产生死锁的会话

SQL> update emp set empname='chenzzaz' where empid=2;
update emp set empname='chenzzaz' where empid=2
       *
第 1 行出现错误:
ORA-00028: 您的会话己被终止


/*20110418陈字文宝鸡项目死锁增加*/
SELECT T2.SID,
	   T2.SERIAL#
FROM V$LOCKED_OBJECT T1,V$SESSION T2,V$SQLTEXT T3
WHERE T1.SESSION_ID=T2.SID AND T2.SQL_ADDRESS=T3.ADDRESS
GROUP BY T2.SID,T2.SERIAL#;

ALTER SYSTEM KILL SESSION '493,4';
ALTER SYSTEM KILL SESSION '470,4';
ALTER SYSTEM KILL SESSION '510,4';
ALTER SYSTEM KILL SESSION '471,3';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值