当前位置: 代码迷 >> Oracle开发 >> oracle for update解决思路
  详细解决方案

oracle for update解决思路

热度:56   发布时间:2016-04-24 06:36:24.0
oracle for update
现有如下情况:
两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?
------解决思路----------------------
找出该会话的sid和serial#
然后kill session
------解决思路----------------------
引用:
现有如下情况:
两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?

kill seesion
------解决思路----------------------
kill seesion
------解决思路----------------------
 kill session 是个办法,但是不一定会马上生效,经常是你执行了 kill ,你再查询 v$session 查看,还有这个会话,只是状态变成了 killed ,windows 环境和 Linux 或 AIX 环境下,都有此类现象发生过。。
------解决思路----------------------
ssh oracle@***.***.***.***
password:
sqlplus / as sysdb
SQL>alter system kill session (****,****);
exit;


------解决思路----------------------
引用:
需要如何做?


Quote: 引用:

Quote: 引用:

现有如下情况:
两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?

kill seesion

查出sid 和.SERIAL#,

select DISTINCT T1.SID,T1.SERIAL#,T2.SQL_TEXT from v$session T1,V$OPEN_CURSOR T2 WHERE T1.SADDR=T2.SADDR;
根据sid 和.SERIAL# 来kill session

alter system kill session 'sid,SERIAL#' immediate;
  相关解决方案