zoukankan      html  css  js  c++  java
  • oracle查看与杀掉锁表的进程

    使用oracle数据库的过程中有可能会因为某些操作导致锁表,一旦发生了锁表的情况程序就无法正常使用了,因此要学会如何查看与杀掉锁表的进程。

    查看锁表进程

    select sess.sid,
           sess.serial#,
           lo.oracle_username,
           lo.os_user_name,
           ao.object_name,
           lo.locked_mode
    from v$locked_object lo,
         dba_objects ao,
         v$session sess
    where ao.object_id = lo.object_id
      and lo.session_id = sess.sid;

    或者

    select *
    from v$session t1,
         v$locked_object t2
    where t1.sid = t2.session_id;

    杀掉锁表进程

    如果能查询出来记录,说明有锁表,这时候需要记录下sid和serial#,用于解除锁表(即杀掉锁表进程)。

    alter system kill session 'sid, serial#';

    要是杀掉了锁表进程之后并没有解决程序异常问题,可能是因为oracle有自己的进程管理策略,在很多情况下杀进程往往不能即时生效,这时候可以在语句末尾加上【immediately】再试试。

    alter system kill session 'sid, serial#' immediately;

    如果这样还不行的话,终极解决办法大概就是杀掉进程后重启程序服务了。

    因为锁表导致的程序异常问题能通过杀掉锁表进程的方式解决,但还是应该找到锁表的原因,从根源上解决以避免问题再次产生。

    "目的是应达到的效果(结果),目标是要达到效果的量化指标。"

    你要去做一个大人,不要回头,不要难过。
  • 相关阅读:
    luogu P3327 [SDOI2015]约数个数和
    生成函数
    luogu P4318 完全平方数
    SP5971 LCMSUM
    luogu P2522 [HAOI2011]Problem b
    UOJ #82. 【UR #7】水题生成器
    CF1147F Zigzag Game
    CF1106F Lunar New Year and a Recursive Sequence
    1114: 逆序
    1113: 递归调用的次数统计(函数专题)
  • 原文地址:https://www.cnblogs.com/yanggb/p/14129017.html
Copyright © 2011-2022 走看看