• 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 进程号

  • 相关阅读:
    通过PMP了
    VBA之自动建立连接
    从头学SQL Server2005之一:数据库引擎体系结构
    SMP、NUMA、MPP体系结构介绍【转】
    将Windows2003的RDP客户端管理应用于XP
    VBA中简单修改原有公式的宏
    各种Excel VBA的命令
    领导和管理的区别在哪里?【转】
    COM(VB/VBA/Script)利用服务标记调用WCF服务之四:使用配置文件
    2009年第一篇日志
  • 原文地址:https://www.cnblogs.com/zydev/p/5181436.html
Copyright © 2020-2023  润新知