zoukankan      html  css  js  c++  java
  • 更新ORACLE数据时遇到锁死情况的处理

    我们在操作数据库的 时候,有时候会由于操作不当引起数据库表被锁定,这么我们经常不知所措,不知怎么给这些表解锁,在pl/sql Developer工具的的菜单“tools”里面的“sessions”可以查询现在存在的会话,但是我们很难找到那个会话被锁定了,想找到所以被锁的 会话就更难了。

    下面是我自己通过网上的资料结合现场环境尝试过有效的杀进程解锁的过程,比较简单,容易操作:

    查看被锁的表:

    SELECT p.spid,
          c.object_name,
          b.session_id,
          a.serial#,
          b.oracle_username,
          b.os_user_name
     FROM v$process p, v$session a, v$locked_object b, all_objects c
     WHERE p.addr = a.paddr
      AND a.process = b.process
      AND c.object_id = b.object_id;

    将查询出来的session_id,serial#,记录下来使用如下语句进行解锁

    解锁:
    alter system kill session'b.session_id,a.serial#';


    如果解锁不成功可以尝试在操作系统层面进行进程结束(威力很大,慎用)

    [Windows]  ntsd -c q -pp.spid
    [Linux]        ps -ef|grepp.spid

    在linux中杀系统进程的时候先试试直接KILL,有些时候无效的情况尝试kill -9 spid

    本人遇到了好几次此类情况都是用以上方法解决了,目前还未遇到无效的。

    希望对各位有帮助。

  • 相关阅读:
    Java第七次作业
    JAVA第六次作业
    JAVA第五次作业
    JAVA第四次作业
    JAVA第三次作业
    JAVA第二次作业
    Java第一次作业
    2017《Java》预备作业02 计科1501刘喆
    2017《JAVA》预备作业 计科1501刘喆
    Java第十次作业--多线程
  • 原文地址:https://www.cnblogs.com/riskyer/p/3339646.html
Copyright © 2011-2022 走看看