oracle for update

来到我身边 2014-06-05 11:42:03
现有如下情况:
两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?
...全文
594 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
来到我身边 2014-07-03
  • 打赏
  • 举报
回复
谢谢你,我去试试
引用 18 楼 z_shousi 的回复:

--找到锁表用户[dba权限]
select sess.sid, 
    sess.serial#, 
    lo.oracle_username, 
    lo.os_user_name, 
    ao.object_name, 
    lo.locked_mode 
    from v$locked_object lo, 
    dba_objects ao, 
    v$session sess 
where ao.object_id = lo.object_id and lo.session_id = sess.sid; 
--杀之
ALTER SYSTEM KILL SESSION 'sid,serial#';
luckman100 2014-06-25
  • 打赏
  • 举报
回复
如果是RAC环境,要查看全部实例上的session就要用gv$session
  • 打赏
  • 举报
回复

--找到锁表用户[dba权限]
select sess.sid, 
    sess.serial#, 
    lo.oracle_username, 
    lo.os_user_name, 
    ao.object_name, 
    lo.locked_mode 
    from v$locked_object lo, 
    dba_objects ao, 
    v$session sess 
where ao.object_id = lo.object_id and lo.session_id = sess.sid; 
--杀之
ALTER SYSTEM KILL SESSION 'sid,serial#';
CT_LXL 2014-06-24
  • 打赏
  • 举报
回复
引用 16 楼 simaweier 的回复:
查出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#吧,如果是想要查询出其他用户的sid 和.SERIAL#需要加入什么条件啊? [quote=引用 11 楼 zlloct 的回复:] [quote=引用 9 楼 simaweier 的回复:] 需要如何做? [quote=引用 2 楼 zlloct 的回复:] [quote=引用 楼主 simaweier 的回复:] 现有如下情况: 两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?
kill seesion[/quote][/quote] 查出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;[/quote][/quote] 所有用户的,你可以选择T1.SERIAL#中你想显示的内容来查看,如: select DISTINCT t1.USERNAME,t1.MACHINE,t1.OSUSER,T1.SID,T1.SERIAL#,T2.SQL_TEXT from v$session T1,V$OPEN_CURSOR T2 WHERE T1.SADDR=T2.SADDR;
来到我身边 2014-06-24
  • 打赏
  • 举报
回复
查出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#吧,如果是想要查询出其他用户的sid 和.SERIAL#需要加入什么条件啊?
引用 11 楼 zlloct 的回复:
[quote=引用 9 楼 simaweier 的回复:] 需要如何做? [quote=引用 2 楼 zlloct 的回复:] [quote=引用 楼主 simaweier 的回复:] 现有如下情况: 两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?
kill seesion[/quote][/quote] 查出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;[/quote]
来到我身边 2014-06-24
  • 打赏
  • 举报
回复
谢谢
引用 12 楼 xiaodejun5241 的回复:
kill: 参考 http://www.eygle.com/faq/Kill_Session.htm
来到我身边 2014-06-24
  • 打赏
  • 举报
回复
谢谢
引用 11 楼 zlloct 的回复:
[quote=引用 9 楼 simaweier 的回复:] 需要如何做? [quote=引用 2 楼 zlloct 的回复:] [quote=引用 楼主 simaweier 的回复:] 现有如下情况: 两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?
kill seesion[/quote][/quote] 查出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;[/quote]
walkeeper 2014-06-11
  • 打赏
  • 举报
回复
有DBA权限的话就开EM杀进程好了
小德 2014-06-10
  • 打赏
  • 举报
回复
kill: 参考 http://www.eygle.com/faq/Kill_Session.htm
CT_LXL 2014-06-10
  • 打赏
  • 举报
回复
引用 9 楼 simaweier 的回复:
需要如何做? [quote=引用 2 楼 zlloct 的回复:] [quote=引用 楼主 simaweier 的回复:] 现有如下情况: 两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?
kill seesion[/quote][/quote] 查出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;
来到我身边 2014-06-10
  • 打赏
  • 举报
回复
需要如何做?
引用 3 楼 yuyeyi 的回复:
kill seesion
来到我身边 2014-06-10
  • 打赏
  • 举报
回复
需要如何做?
引用 2 楼 zlloct 的回复:
[quote=引用 楼主 simaweier 的回复:] 现有如下情况: 两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?
kill seesion[/quote]
来到我身边 2014-06-10
  • 打赏
  • 举报
回复
如何通过我的机器找出另一台机器的会话的sid和serial#?
引用 1 楼 wildwave 的回复:
找出该会话的sid和serial# 然后kill session
什么都不能 2014-06-08
  • 打赏
  • 举报
回复
ssh oracle@***.***.***.*** password: sqlplus / as sysdb SQL>alter system kill session (****,****); exit;
huangdh12 2014-06-08
  • 打赏
  • 举报
回复
只能够杀进程了。 另外如果是无关紧要的机器的话,重启数据库服务也是可以的哈。。
善若止水 2014-06-07
  • 打赏
  • 举报
回复
只能杀进程了,如果进程被标记为"killed",就需要复杂一点了。
卖水果的net 2014-06-07
  • 打赏
  • 举报
回复
kill session 是个办法,但是不一定会马上生效,经常是你执行了 kill ,你再查询 v$session 查看,还有这个会话,只是状态变成了 killed ,windows 环境和 Linux 或 AIX 环境下,都有此类现象发生过。。
CT_LXL 2014-06-05
  • 打赏
  • 举报
回复
引用 楼主 simaweier 的回复:
现有如下情况: 两个人同时使用一个数据库,其中的一个人将其中一个表锁住了,如:select * form A for update,此时他的机器卡死了,而另外一个人想要使用表A,这时候应该怎样对表A进行解锁?
kill seesion
小灰狼W 2014-06-05
  • 打赏
  • 举报
回复
找出该会话的sid和serial# 然后kill session
yuyeyi 2014-06-05
  • 打赏
  • 举报
回复
kill seesion

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧