【ORACLE】查看死锁进程并结束死锁的脚本
- --共享锁:Share;排他锁:Exclusive;行共享锁:Row-S;行排他锁:Row-X
- 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语句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;
- --杀掉锁表进程:
- --如有記錄則表示有lock,記錄下SID, serial# ,將記錄的ID替換下面的1143,24155,即可解除LOCK
- alter system kill session '1143,24155';
- SELECT Saddr, Sid, Serial#, Paddr, Username, Status FROM V$session t WHERE t.SID = '';
- --查看机器锁定代码对象
- select b.sid,b.serial#,b.machine,b.terminal,b.program,b.process,b.status from v$lock a , v$session b
- where a.SID = b.SID and b.MACHINE='guoshaoyue-5040';
- --用这个可以查(可以查看哪台机器哪个用户锁了记录, 其中command是用来杀掉锁住记录的session ):
- 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;
- --同样也是通过写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 功能:检查被加锁的对象以及加锁的会话信息
- -- ALTER-SQL1 功能:杀死会话(SESSION_ID,SERIAL#),可以手工解除锁
- -- 请手工修改SESSION_ID,SERIAL#为相应值
- -- 注意:本功能慎重使用,有一定的破坏性,该SQL可以断开客户机和服务器的连接
- -- ALTER SYSTEM KILL SESSION 'SESSION_ID,SERIAL#';
- 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 ;
【ORACLE】查看死锁进程并结束死锁的脚本的更多相关文章
- 查看oracle死锁进程并结束死锁
查看锁表进程SQL语句1: select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo ...
- Windows下查看8080进程及结束进程命令
Windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP 0.0.0.0:8080 ...
- 读取oracle页面或者进程卡住不动(死锁)
oracle最坑爹的地方:你insert update delete之后 或者kill死锁的时候记得一定要提交事务不然就是死锁卡在那里了 记住 kill死锁也是要提交事务的 select * ...
- 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
/* -- 处理死锁 -- 查看当前进程,或死锁进程,并能自动杀掉死进程 -- 因为是针对死的,所以如果有死锁进程,只能查看死锁进程 -- 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程 ...
- .Net程序员学用Oracle系列(24):数据字典、死锁
1.静态数据字典 1.1.实用静态数据字典 1.2.运用静态数据字典 2.动态数据字典 2.1.实用动态性能视图 2.2.运用动态性能视图 3.死锁 3.1.定位死锁 3.2.解锁方法 3.3.强制删 ...
- sql server 查询和Kill死锁进程
查询死锁进程语句 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tab ...
随机推荐
- 今天发现一个汉字转换成拼音的模块,记录一下,直接pip install xpinyin即可
http://blog.csdn.net/qq_33232071/article/details/50915760
- 129 Sum Root to Leaf Numbers 求根叶数字总和
给定一个只包含 0-9 数字的二叉树,每个根到叶的路径可以代表一个数字.例如,从根到叶路径 1->2->3则代表数字 123.查找所有根到叶数字的总和.例如, 1 / \ 2 ...
- 146 LRU Cache 最近最少使用页面置换算法
设计和实现一个 LRU(最近最少使用)缓存 数据结构,使它应该支持以下操作: get 和 put .get(key) - 如果密钥存在于缓存中,则获取密钥的值(总是正数),否则返回 -1.put(k ...
- 在虚拟机里安装windows或Linux系统时,安装窗口过大按钮有时点不到解决办法(图文详解)
不多说,直接上干货! 问题详情 解决办法 很简单快捷的解决办法,就是快捷键ALT+F7,可以拖动窗口的位置. 成功!
- android开发学习 ------- Retrofit+Rxjava+MVP网络请求的实例
http://www.jianshu.com/p/7b839b7c5884 推荐 ,照着这个敲完 , 测试成功 , 推荐大家都去看一下 . 下面贴一下我照着这个敲完的代码: Book实体类 - 用 ...
- 用NPOI从Excel到DataTable
NPOI功能强大,不用装Excel,就可以操作表格中数据----Excel.Sheet------>DataTable private IWorkbook workbook = null; pr ...
- re正则表达式公式讲解5
1.refullmatch() 完全匹配字符串则返回object,否则返回None import re s = "max@123uyt146" print(re.fullmatch ...
- iOS圆形图片裁剪,原型图片外面加一个圆环
/** * 在圆形外面加一个圆环 */ - (void)yuanHuan{ //0.加载图片 UIImage *image = [UIImage imageNamed:@"AppIcon1 ...
- 盘点那些年,被Oracle收购的公司
微博上看到一图,很清晰.盘点那些年,被Oracle收购的公司,Oracle日益强大,都收购了哪些公司呢?别再以为只有Sun啦...看看你都知道哪些? ps:Strategic Acquisitions ...
- Hibernate中的inverse和cascade属性
Hibernate中的inverse和cascade属性 inverse的值有两种,"true"和"false".inverse="false&quo ...