Loading

oracle查锁表


   查锁表

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 system kill session 'sid,serial#'

--如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
--select spid, osuser, s.program from v$session s,v$process p where
--s.paddr=p.addr and s.sid=130;
--去linux后台使用 kill -9 进程号

posted @ 2016-02-04 13:51  头痛不头痛  阅读(498)  评论(0编辑  收藏  举报