`
jyangzi5
  • 浏览: 207862 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

如何杀掉(kill)Oracle中的会话(Session)

 
阅读更多

有时,Oracle中造成一些表被死锁或者会话异常退出,如执行了更新记录操作后,既没有commit也没有rollback,网络就断开了,也会造表或记录被锁住,待到超时后才会被解开,那样都会造成应用操作被阻塞。

可以以Oralce管理员权限用户登录Oracle数据,查询到被锁的对象,然后杀除指定的会话。

用下面的语句查询被锁的对象,可以带上更多约束条件,如schemaname等更精确的匹配。

 
  1. SELECT  a.object_id, a.session_id, b.object_name, c.*   
  2.    FROM  v$locked_object a, dba_objects b, v$session c   
  3.   WHERE  a.object_id = b.object_id   
  4.     AND  a.SESSION_ID = c.sid(+)   

杀Seesion的SQL语句语法如下:

 

 
  1. alter system kill session 'sid, serial#'   

 

如上面查出来的一条记录的sid是53, serial#为663,就执行以下的语句

 

 
  1. 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'7. ORDER BY logon_time

 
 
分享到:
评论

相关推荐

    如何快速的杀掉Oracle的Session

    一、问题的提出很多的时候我们迅速的杀掉Oralcle的一些session,理由大体如下:  1、 一些时候,由于我们的数据量很大,相应的事务大并且多,在做shutdown immediate的时候会花费好多的时间,而我们却想用shutdown ...

    如何安全快速的批量删除Oracle数据库外部会话session

    在ORACLE数据库杀掉会话进程有三种方式: 1:ALTER SYSTEM KILL SESSION 关于KILL SESSION Clause ,官方文档描述alter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除...

    Oracle疑难:session无法完全删除问题

    Oracle疑难:session无法完全删除问题

    oracle ORA-00031:session marked for kill(标记要终止的会话)解决方法

    主要介绍了oracle ORA-00031:session marked for kill(标记要终止的会话)解决方法 ,需要的朋友可以参考下

    ORACLE 查询被锁住的对象,并结束其会话的方法

    使用Oracle时,发现有表被锁,又不知道是谁(或者哪个程序)锁的,怎么办 ?... 'ALTER SYSTEM KILL SESSION '''|| S.SID || ', '|| S.SERIAL#||''';' AS KILL_COMMAND FROM V$LOCKED_OBJECT L, V$SESSION

    Oracle 主要配置文件介绍

    系统级的环境变量一般在/etc/profile 文件中定义 在 CAMS 系统 与数据库 相关的环境变量就定义在/etc/profile 文件中 如下所示 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/...

    Oracle解锁的方式介绍

    方式一:通过SQL查询 select ‘alter system kill session ‘,””||trim(t2.sid)||’,’||trim(t2.serial#)||”’;’ from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; ...

    orcale常用命令

    然后用 kill 命令杀此进程号。 五、SQL*PLUS使用 a、近入SQL*Plus $sqlplus 用户名/密码 退出SQL*Plus SQL>exit b、在sqlplus下得到帮助信息 列出全部SQL命令和SQL*Plus命令 SQL>help 列出某个特定的命令的信息...

    99乘法表java源码-OracleDBUtils:适用于Oracle数据库的有用PL/SQL实用程序

    可以找到有关杀死会话的各种方法的详细说明。 这个包提供了立即作业和会话终止的方法。 通常,此任务由 DBA 执行,而不是由开发人员执行。 但有时它可以简化 DBA 和开发人员的频繁编译过程(通过为后者提供更多权限...

    数据库异常hang住解决

     接着通过sqldevelpdev客户端查询有没有锁等待之类会话事件,果然有,而且是两个session持有TX锁,然后通过下面的sql查询从oracle和linux级别kill掉了相应session,以为风波此平静,结果过了不

    数据库项目组日常运维及应急故障处理手册.docx

    (1)要kill掉所有连接到数据库中的会话,所有会话都会回滚。 (2)立即重启的话,不能获取并保留分析数据库挂起原因的信息,在后续分析问题时,没有足够信息用于分析问题产生的根本原因。 一般正常重启的话,都...

    Toad 使用快速入门

    在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad(Tools of ...

Global site tag (gtag.js) - Google Analytics