查看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. ...
 
随机推荐
- 数据持久化之NSKeyedArchiver
			
基本的数据类型如NSString.NSDictionary.NSArray.NSData.NSNumber等可以用属性列表的方法持久化到.plist 文件中,但如果是一些自定义的类的话,属性列表的方法 ...
 - 2016春招Android开发实习生(网易传媒)笔试
			
一.单选题 1.下列不属于网络层协议的为 TCP IP IPX ICMP 2.关于activity的状态恢复,错误的是 onSaveInstanceState中,activity会自动收集恢复view ...
 - Android 异步Http框架简介和实现原理
			
在前几篇文章中<Android 采用get方式提交数据到服务器><Android 采用post方式提交数据到服务器><Android 采用HttpClient提交数据到服 ...
 - 【Android】用HandlerThread模拟AsyncTask功能(ThreadTask)
			
前言 AsyncTask是个好东西,能处理绝大多数应用线程和更新UI的任务,由于其内部使用了静态线程池,如果你有一堆异步任务(例如全局定时更新数据.同一个Activity中多个AsyncTask同时执 ...
 - WPF 命令基础
			
1命令的组成 命令源:就是谁发送的命令. 命令目标:就是这个命令发送给谁,谁接受的命令. 命令:就是命令的内容. 命令关联:就是把命令和外围的逻辑关联起来,主要用来判断命令是否可以执行和执行完以后干点 ...
 - C#语言——类
			
C#——类 一.String 类 系统内置的处理字符串类型的函数方法类.方便我们对字符串类型进行一系列的处理. 1.Length:获取字符串的长度,返回一个int类型的值 string x=Conso ...
 - SQL动态列查询
			
数据库中为了实现表格数据的自由设置,我们经常设计纵表,或者列定义的表(如下KeyValue),定义一个列超级多的表中每个字段的意义. 但是在设计时简单的东西却很容易被人们忘记,如下一个简单但是很松散的 ...
 - 使用 python 发送邮件
			
1.使用python 写发邮箱代码: def sendmail (): import smtplib from email.mime.text import MIMEText from email.u ...
 - android The public type classname must be defined in its own file 报错
			
The public type classname must be defined in its own file classname 为类名 错误提示,公用的类必髯有自己拥有独立.java文件 解 ...
 - 折半算法的C#实现方式-递归和非递归
			
这个算法,相信大家都懂,但是不真正的手动写一遍,总觉得不得劲.这不,手动写一遍就是有不一样的效果出现了. 往左折半,还是往右走比较简单,其实这两个算法最关键的是:退出条件 min > max ...