十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以以Oralce管理员权限用户登录Oracle数据,查询到被锁的对象,然后杀除指定的会话。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的融安网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
用下面的语句查询被锁的对象,可以带上更多约束条件,如schemaname等更精确的匹配。
SELECT a.object_id, a.session_id, b.object_name, c.*
FROM v$locked_object a, dba_objects b, v$session c
WHERE a.object_id = b.object_id
AND a.SESSION_ID = c.sid(+)
杀Seesion的SQL语句语法如下:
alter system kill session 'sid, serial#'
如上面查出来的一条记录的sid是53, serial#为663,就执行以下的语句
alter system kill session '53,663'
如果要一次性杀死多个会话,一个一个填写sid和serial#十分的繁琐,应该在查询被锁对象的同时拼凑出多条的杀会话语句,以分号分隔,一起复制下来,然后就可以批量的执行了。
拼凑kill语句的方式如下,下面加了一个过滤条件和一个排序,杀除真正关心的表,并且着重注意超时时间过长的会话。
SELECT 'alter system kill session ''' || c.sid || '' || ',' || c.serial# ||''';',
a.object_id, a.session_id, b.object_name, c.*
FROM v$locked_object a, dba_objects b, v$session c
WHERE a.object_id = b.object_id
AND a.SESSION_ID = c.sid(+)
AND schemaname = 'Unmi'
ORDER BY logon_time
所有用户的会话都可以在字典v$session里查到,断开连接的意思应该是杀死会话吧,杀一个会话用alter
system
kill
session命令,需要知道sid和serial#,这都可以从字典里查到
执行下机的sql
select
'alter
system
kill
session
'''||sid||','||serial#||''';'
from
v$session;
把结果复制、粘贴再执行就可以断开所有连接了
注意:有些系统可能设置了自动重新连接
如果你是在操作系统级别的中断。可以用kill -9 ora*****或者是kill -9 ****** 你想要停掉的那个进程的进程号。这样就可以直接挺掉数据库的调试了。
如果数据库里面,你查出这那个session执行的这个操作。之后在数据库中直接中断这个session的连接也可以挺掉调试。
如果你用软件的话,PLSQL Developer 这样的软件,就更容易了。这个就不用我交你了吧。都是按钮方式的。点一下就停了。或者直接就把窗口关掉。只要强行推出就号了。