查看锁表进程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死锁进程并结束死锁的更多相关文章

  1. 【ORACLE】查看死锁进程并结束死锁的脚本

    --共享锁:Share:排他锁:Exclusive:行共享锁:Row-S:行排他锁:Row-X select V$SESSION.sid,v$session.SERIAL#,v$process.spi ...

  2. Oracle删除死锁进程的方法

    本文实例讲述了Oracle删除死锁进程的方法.分享给大家供大家参考.具体如下: 步骤1:用以下SQL查看进程列表,判断出被锁定的表 复制代码代码如下: SELECT dob.OBJECT_NAME T ...

  3. sql server 查看表的死锁和Kill 死锁进程

    查询出来 select        request_session_id spid,       OBJECT_NAME(resource_associated_entity_id) tableNa ...

  4. Sql server 查看锁和Kill 死锁进程

    死锁的概念 死锁就是两个或多个会话(SPID)相互请求对方持有的锁资源,导致循环等待的情况.下面两种方法都是用来粗暴的解决死锁的. # 已知阻塞进程ID KILL ID SELECT blocking ...

  5. sqlserver查看死锁进程工具脚本p_lockinfo

    /* -- 处理死锁 -- 查看当前进程,或死锁进程,并能自动杀掉死进程 -- 因为是针对死的,所以如果有死锁进程,只能查看死锁进程 -- 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程 ...

  6. sql server 查询和Kill死锁进程

    查询死锁进程语句 select        request_session_id spid,       OBJECT_NAME(resource_associated_entity_id) tab ...

  7. Windows下查看进程及结束进程命令[转]

    Windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP    0.0.0.0:8080        ...

  8. Windows下查看8080进程及结束进程命令

    Windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP    0.0.0.0:8080        ...

  9. 查看Oracle数据库被锁住的表,删除锁表的进程

    锁表处理及查询 查看Oracle数据库被锁住的表,删除锁表的进程 1.查看被锁住的表 SELECT dob.object_name table_name,    lo.locked_mode, lo. ...

随机推荐

  1. 数据持久化之NSKeyedArchiver

    基本的数据类型如NSString.NSDictionary.NSArray.NSData.NSNumber等可以用属性列表的方法持久化到.plist 文件中,但如果是一些自定义的类的话,属性列表的方法 ...

  2. 2016春招Android开发实习生(网易传媒)笔试

    一.单选题 1.下列不属于网络层协议的为 TCP IP IPX ICMP 2.关于activity的状态恢复,错误的是 onSaveInstanceState中,activity会自动收集恢复view ...

  3. Android 异步Http框架简介和实现原理

    在前几篇文章中<Android 采用get方式提交数据到服务器><Android 采用post方式提交数据到服务器><Android 采用HttpClient提交数据到服 ...

  4. 【Android】用HandlerThread模拟AsyncTask功能(ThreadTask)

    前言 AsyncTask是个好东西,能处理绝大多数应用线程和更新UI的任务,由于其内部使用了静态线程池,如果你有一堆异步任务(例如全局定时更新数据.同一个Activity中多个AsyncTask同时执 ...

  5. WPF 命令基础

    1命令的组成 命令源:就是谁发送的命令. 命令目标:就是这个命令发送给谁,谁接受的命令. 命令:就是命令的内容. 命令关联:就是把命令和外围的逻辑关联起来,主要用来判断命令是否可以执行和执行完以后干点 ...

  6. C#语言——类

    C#——类 一.String 类 系统内置的处理字符串类型的函数方法类.方便我们对字符串类型进行一系列的处理. 1.Length:获取字符串的长度,返回一个int类型的值 string x=Conso ...

  7. SQL动态列查询

    数据库中为了实现表格数据的自由设置,我们经常设计纵表,或者列定义的表(如下KeyValue),定义一个列超级多的表中每个字段的意义. 但是在设计时简单的东西却很容易被人们忘记,如下一个简单但是很松散的 ...

  8. 使用 python 发送邮件

    1.使用python 写发邮箱代码: def sendmail (): import smtplib from email.mime.text import MIMEText from email.u ...

  9. 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文件 解 ...

  10. 折半算法的C#实现方式-递归和非递归

    这个算法,相信大家都懂,但是不真正的手动写一遍,总觉得不得劲.这不,手动写一遍就是有不一样的效果出现了. 往左折半,还是往右走比较简单,其实这两个算法最关键的是:退出条件 min > max   ...