【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 ...
随机推荐
- Java | 技术应用 | 利用Jsoup处理页面
根据微信公众号的推文链接地址,对文章内容进行爬取,利用jsoup解析文章源代码,加上结合xpth提取文文章信息, 利用正则表达式读取文章发表时间. Jsoup <!-- jsoup HTML p ...
- IDEA中创建HBASE工程
IntelliJ IDEA+maven的HBase开发环境搭建 hbase 配置(hbase-site.xml)和基本使用 16010端口可以查看Hbase web信息
- Pursuit For Artifacts CodeForces - 652E
https://vjudge.net/problem/CodeForces-652E 边双啊,就是点双那个tarjan里面,如果low[v]==dfn[v](等同于low[v]>dfn[u]), ...
- PopupWindow(2)简单示例-自定义弹出菜单
本示例,用 popupWindow 自定义弹出菜单 public class CustomActionProvider extends ActionProvider implements OnMenu ...
- qconbeijing2016
http://2016.qconbeijing.com/schedule 大会日程 2016年04月21日 星期四 09:15 开场致辞 地点 1号厅 主题演讲 工程效率提升 业务核心架构 容器集 ...
- 【经验总结】VS2010下建立MFC程序
孙鑫的MFC教学视频非常不错,但是由于视频中孙鑫老师采用VC6.0版本,而现在 许多人都转向了使用VS,VS为我们生成了许多不需要的代码,这也导致在这节课的学习编程中总是遇到一些困难.那么,如何去掉这 ...
- js dom node.children与node.childNodes区别
不同点:node.children不会取到节点下面的TextNode但是node.childNodes会取到 共同点:两者都是集合类数组,可以通过索引的方式取到值也可以用for循环遍历
- 《Python基础教程》 读书笔记 第六章 抽象 函数 参数
6.1创建函数 函数是可以调用(可能包含参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值.一般来说,内建的callable函数可以用来判断函数是否可调用: >>> x=1 ...
- react基础语法(四) state学习
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- finger - 用户信息查找程序
总览 finger [-lmsp ] [user ... ] [user@host ... ] 描述 The finger 显示关于系统用户的信息 参数: -s Finger 显示用户的登录名, 真名 ...