Home  >  Article  >  Database  >  oracle杀死死锁的方法

oracle杀死死锁的方法

WBOY
WBOYOriginal
2016-06-07 15:14:091361browse

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 oracle杀死死锁的方法 执行以下语句,查看死锁: 1 2 3 4 5 6 7 8 select /* + rule */ lpad( ' ' ,decode(l.xidusn,0,3,0))||l.oracle_username User_name, o.owner,o.object_name,o.object_type,s

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  oracle杀死死锁的方法

  执行以下语句,查看死锁:

1

2

3

4

5

6

7

8

<font face="NSimsun">select</font> <font face="NSimsun">/* + rule */</font> lpad(' ',decode(l.xidusn,0,3,0))||l.oracle_username User_name,

<font face="NSimsun"> </font> 

<font face="NSimsun">o.owner,o.object_name,o.object_type,s.sid,s.serial#,p.spid </font>

<font face="NSimsun">from</font> <font face="NSimsun">v$locked_object l,dba_objects o,v$session s,v$process p  </font>

<font face="NSimsun">where</font> <font face="NSimsun">l.object_id=o.object_id </font>

<font face="NSimsun">and</font> <font face="NSimsun">l.session_id=s.sid </font>

<font face="NSimsun">and</font> <font face="NSimsun">s.paddr = p.addr  </font>

<font face="NSimsun">order</font> <font face="NSimsun">by</font> o.object_id,xidusn DESC;

  (执行这个语句的目的,是为了找到你需要杀死的死锁的SID和SERIAL#,注意:不建议你杀死别人的死锁,有可能别人在你查询死锁的时刻,正在做某些操作而锁表,刚好你正在查询死锁,其实你再查询的时候别人的锁已经解了。所以,无关自己的表的锁,不建议去杀死。)

  好了,找到你需要操作的表名,然后找到对应的SID和SERIAL#

  替换下面语句的变量,然后执行,即可解锁。

1

<font face="NSimsun">alter</font> system kill session 'sid,serial#';

  假如,你找到的SID和SERIAL#分别是:35,1980

  那么你应该执行的杀死死锁的语句如下:

1

<font face="NSimsun">alter</font> system kill session '35,1980';

  然后再执行第一个语句看看你的死锁被杀死了没有?

  肯定会成功的!

oracle杀死死锁的方法

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn