查看oracle死锁进程并结束死锁
查看锁表进程SQL语句1: 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; 查看锁表进程SQL语句2: select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; 杀掉锁表进程: 如有記錄則表示有lock,記錄下SID和serial# ,將記錄的ID替換下面的738,,即可解除LOCK alter system kill session '738,1429'; 用这个可以查: select s.sid,s.machine,o.object_name,l.oracle_username,l.locked_mode, 'ALTER SYSTEM KILL SESSION '''||s.sid||', '||s.serial#||''';' Command from v$locked_object l,v$session s,all_objects o where l.session_id=s.sid and l.object_id=o.object_id 可以查看哪台机器哪个用户锁了记录, 其中command是用来杀掉锁住记录的session ****************************************************************************************************************** SELECT A.OBJECT_ID, B.OBJECT_NAME, A.SESSION_ID, A.ORACLE_USERNAME, A.OS_USER_NAME, A.PROCESS, A.LOCKED_MODE FROM V$LOCKED_OBJECT A, DBA_OBJECTS B WHERE A.OBJECT_ID = B.OBJECT_ID; SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME FROM V$LOCKED_OBJECT T1, V$SESSION T2 WHERE T1.SESSION_ID = T2.SID ORDER BY T2.LOGON_TIME; ALTER SYSTEM KILL SESSION 'sid, serial#'; ******************************************************************************************************************** session : C:\>sqlplus hxg/hxg SQL> select * from scott.t; A B C ---------- -------------------- -------------------- 111 aa bb 222 hello world SQL; 已更新 行。 session : C:\>sqlplus scott/tiger SQL> select * from scott.t; A B C ---------- -------------------- -------------------- 111 aa bb 222 hello world SQL; 挂起。。。。 session : C:\>sqlplus "system/*** as sysdba" SQL> select sid,serial#,username,status from v$session; SID SERIAL# USERNAME STATUS ---- ---------- ------------------------------ -------- 146 25 SYS ACTIVE 147 11 SYS INACTIVE 148 2 HXG INACTIVE 150 5 SCOTT ACTIVE 151 1 ACTIVE 154 1 ACTIVE 159 6 ACTIVE 160 1 ACTIVE 161 1 ACTIVE 162 1 ACTIVE 163 1 ACTIVE SID SERIAL# USERNAME STATUS ---- ---------- ------------------------------ -------- 164 1 ACTIVE 165 1 ACTIVE 166 1 ACTIVE 167 1 ACTIVE 168 1 ACTIVE 169 1 ACTIVE 170 1 ACTIVE 已选择18行。 SQL> alter system kill session '148,2'; 系统已更改。 SQL> select sid,serial#,username,status from v$session; SID SERIAL# USERNAME STATUS ---- ---------- ------------------------------ -------- 146 25 SYS ACTIVE 147 11 SYS INACTIVE 148 2 HXG KILLED 150 5 SCOTT INACTIVE 151 1 ACTIVE 154 1 ACTIVE 159 6 ACTIVE 160 1 ACTIVE 161 1 ACTIVE 162 1 ACTIVE 163 1 ACTIVE SID SERIAL# USERNAME STATUS ---- ---------- ------------------------------ -------- 164 1 ACTIVE 165 1 ACTIVE 166 1 ACTIVE 167 1 ACTIVE 168 1 ACTIVE 169 1 ACTIVE 170 1 ACTIVE 已选择18行。 SQL> select V$SESSION.sid,v$session.SERIAL#,v$process.spid, rtrim(object_type) object_type,rtrim(owner) || '.' || object_name object_name, decode(lmode, 0, 'None', 1, 'Null', 2, 'Row-S', 3, 'Row-X', 4, 'Share', 5, 'S/Row-X', 6, 'Exclusive', 'Unknown') LockMode, decode(request, 0, 'None', 1, 'Null', 2, 'Row-S', 3, 'Row-X', 4, 'Share', 5, 'S/Row-X', 6, 'Exclusive', 'Unknown') RequestMode ,ctime, block b, v$session.username,MACHINE,MODULE,ACTION, decode(A.type, 'MR', 'Media Recovery', 'RT','Redo Thread', 'UN','User Name', 'TX', 'Transaction', 'TM', 'DML', 'UL', 'PL/SQL User Lock', 'DX', 'Distributed Xaction', 'CF', 'Control File', 'IS', 'Instance State', 'FS', 'File Set', 'IR', 'Instance Recovery', 'ST', 'Disk Space Transaction', 'TS', 'Temp Segment', 'IV', 'Library Cache Invalida-tion', 'LS', 'Log Start or Switch', 'RW', 'Row Wait', 'SQ', 'Sequence Number', 'TE', 'Extend Table', 'TT', 'Temp Table', 'Unknown') LockType from (SELECT * FROM V$LOCK) A, all_objects,V$SESSION,v$process where A.sid > 6 and object_name<>'OBJ$' and A.id1 = all_objects.object_id and A.sid=v$session.sid and v$process.addr=v$session.paddr; 同样也是通过写sql从数据字典里查出来。 // SELECT-SQL1 // 功能:检查被加锁的对象 //select obj.OWNER||'.'||obj.OBJECT_NAME as OBJ_NAME, // 对象名称(已经被锁住) // obj.SUBOBJECT_NAME as SUBOBJ_NAME, // 子对象名称(已经被锁住) // obj.OBJECT_ID as OBJ_ID, // 对象ID // obj.OBJECT_TYPE as OBJ_TYPE, // 对象类型 // lock_obj.SESSION_ID as SESSION_ID, // 会话SESSION_ID // lock_obj.ORACLE_USERNAME as ORA_USERNAME, // ORACLE系统用户名称 // lock_obj.OS_USER_NAME as OS_USERNAME, // 操作系统用户名称 // lock_obj.PROCESS as PROCESS // 进程编号 //from // ( select * from all_objects where object_id in (select object_id from v$locked_object)) obj, // v$locked_object lock_obj //where obj.object_id=lock_obj.object_id; //// SELECT-SQL2 //// 功能:检查被加锁的对象以及加锁的会话信息 //// 如果需要手工解除锁,请对照要解锁的对象,记下SESSION_ID,SERIAL# //// 项,然后运行下面的ALTER-SQL1 //select LOCK_INFO.OWNER||'.'||LOCK_INFO.OBJ_NAME as OBJ_NAME, // 对象名称(已经被锁住) // LOCK_INFO.SUBOBJ_NAME as SUBOBJ_NAME, // 子对象名称(已经被锁住) // SESS_INFO.MACHINE as MACHINE, // 机器名称 // LOCK_INFO.SESSION_ID as SESSION_ID, // 会话SESSION_ID // SESS_INFO.SERIAL# as SERIAL#, // 会话SERIAL# // LOCK_INFO.ORA_USERNAME as ORA_USERNAME, // ORACLE系统用户名称 // LOCK_INFO.OS_USERNAME as OS_USERNAME, // 操作系统用户名称 // LOCK_INFO.PROCESS as PROCESS, // 进程编号 // LOCK_INFO.OBJ_ID as OBJ_ID, // 对象ID // LOCK_INFO.OBJ_TYPE as OBJ_TYPE, // 对象类型 // SESS_INFO.LOGON_TIME as LOGON_TIME, // 登录时间 // SESS_INFO.PROGRAM as PROGRAM, // 程序名称 // SESS_INFO.STATUS as STATUS, // 会话状态 // SESS_INFO.LOCKWAIT as LOCKWAIT, // 等待锁 // SESS_INFO.ACTION as ACTION, // 动作 // SESS_INFO.CLIENT_INFO as CLIENT_INFO // 客户信息 // //from // ( // select obj.OWNER as OWNER, // obj.OBJECT_NAME as OBJ_NAME, // obj.SUBOBJECT_NAME as SUBOBJ_NAME, // obj.OBJECT_ID as OBJ_ID, // obj.OBJECT_TYPE as OBJ_TYPE, // lock_obj.SESSION_ID as SESSION_ID, // lock_obj.ORACLE_USERNAME as ORA_USERNAME, // lock_obj.OS_USER_NAME as OS_USERNAME, // lock_obj.PROCESS as PROCESS // from // ( select * from all_objects where object_id in (select object_id from v$locked_object)) obj, // v$locked_object lock_obj // where obj.object_id=lock_obj.object_id // ) LOCK_INFO, // ( // select SID, // SERIAL#, // LOCKWAIT, // STATUS, // PROGRAM, // ACTION, // CLIENT_INFO, // LOGON_TIME, // MACHINE // from v$session // ) SESS_INFO //where LOCK_INFO.SESSION_ID=SESS_INFO.SID ; //// 看清楚了 下面就可以 杀死它了。 // ALTER-SQL1 // 功能:杀死会话(SESSION_ID,SERIAL#),可以手工解除锁 // 请手工修改SESSION_ID,SERIAL#为相应值 // 注意:本功能慎重使用,有一定的破坏性,该SQL可以断开客户机和服务器的连接 //ALTER SYSTEM KILL SESSION 'SESSION_ID,SERIAL#';
查看oracle死锁进程并结束死锁的更多相关文章
- 【ORACLE】查看死锁进程并结束死锁的脚本
--共享锁:Share:排他锁:Exclusive:行共享锁:Row-S:行排他锁:Row-X select V$SESSION.sid,v$session.SERIAL#,v$process.spi ...
- Oracle删除死锁进程的方法
本文实例讲述了Oracle删除死锁进程的方法.分享给大家供大家参考.具体如下: 步骤1:用以下SQL查看进程列表,判断出被锁定的表 复制代码代码如下: SELECT dob.OBJECT_NAME T ...
- sql server 查看表的死锁和Kill 死锁进程
查询出来 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableNa ...
- Sql server 查看锁和Kill 死锁进程
死锁的概念 死锁就是两个或多个会话(SPID)相互请求对方持有的锁资源,导致循环等待的情况.下面两种方法都是用来粗暴的解决死锁的. # 已知阻塞进程ID KILL ID SELECT blocking ...
- sqlserver查看死锁进程工具脚本p_lockinfo
/* -- 处理死锁 -- 查看当前进程,或死锁进程,并能自动杀掉死进程 -- 因为是针对死的,所以如果有死锁进程,只能查看死锁进程 -- 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程 ...
- sql server 查询和Kill死锁进程
查询死锁进程语句 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tab ...
- Windows下查看进程及结束进程命令[转]
Windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP 0.0.0.0:8080 ...
- Windows下查看8080进程及结束进程命令
Windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP 0.0.0.0:8080 ...
- 查看Oracle数据库被锁住的表,删除锁表的进程
锁表处理及查询 查看Oracle数据库被锁住的表,删除锁表的进程 1.查看被锁住的表 SELECT dob.object_name table_name, lo.locked_mode, lo. ...
随机推荐
- VSS、RSS、PSS、USS
VSS:Virtual Set Size,虚拟耗用内存.它是一个进程能访问的所有内存空间地址的大小.这个大小包含了一些没有驻留在RAM中的内存,就像mallocs已经被分配,但还没有写入.VSS很少用 ...
- DropDownList 添加一个"请选择"或"全部"之类的项
DropDownList在从数据库中得到数据源绑定后,添加一个"请选择"或"全部"之类的项 1:直接添加:<asp:ListItem Value=&quo ...
- iOS开发200个tips总结(一)
tip 1 : 给UIImage添加毛玻璃效果 func blurImage(value:NSNumber) -> UIImage { let context = CIContext(opti ...
- BiliBili 第三方 Android 客户端应用源码
基于 Material Design 的 BiliBili 第三方 Android 客户端,我们知道这个APP目前比较流行,所以大家也比较喜欢模仿,需要的参考一下 文档共享 : https://dri ...
- 【代码笔记】iOS-关于UIFont的一些define
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- MVC 生成图片,下载文件(图片不存在本地,在网上下载)
/// <summary> /// 生成图片 /// </summary> /// <param name="collection"></ ...
- 转载:检测到有潜在危险的 Request.Form 值
转载:检测到有潜在危险的 Request.Form 值 金刚 ASP.NET Request.Form 这是一篇转载的文章,文章原始出处.点我 这种问题是因为你提交的Form中有HTML字符串,例如你 ...
- [转载]Emmet使用
转载地址:http://www.iteye.com/news/27580 Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语 ...
- yii2 rbac权限控制详细操作步骤
作者:白狼 出处:http://www.manks.top/article/yii2_rbac_description本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 ...
- JavaScript(一)——简介(简单介绍)
1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司(已被Oracle收购了),J ...