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代码调用shell脚本执行sqoop将hive表中数据导出到mysql
    用sqoop将mysql的数据导入到hive表中
    windows下启动mysql服务的命令行启动和手动启动方法
    使sqoop能够启用压缩的一些配置
    简易安装sqoop
    sqoop一些语法的使用
    mysql 视图
    MySQL 函数大全及用法示例
    MySQL 触发器 -1
    MySQL 函数
  • 原文地址:https://www.cnblogs.com/riskyer/p/3339646.html
Copyright © 2011-2022 走看看