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

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

    希望对各位有帮助。

  • 相关阅读:
    Week-1 linux命令行重点整理
    Week-1 linux命令行重点整理
    k8s namespace限制调研
    k8s namespace限制调研
    CSS开发技巧(三):图片点击缩放
    Failed building wheel for cytoolz
    Failed building wheel for cytoolz
    web.config访问走代理的配置
    bzoj1799(洛谷4127)同类分布(月之谜)
    bzoj4247挂饰——压缩的动态规划
  • 原文地址:https://www.cnblogs.com/riskyer/p/3339646.html
Copyright © 2011-2022 走看看