zoukankan      html  css  js  c++  java
  • 解决Oracle视图被锁住的问题

    会产生这种视力被锁定的现象是删除某个对象的时候进程会死掉,创建的时候也是一样。

    我同事解释的可能原因是:
    在创建对象的时候没有创建完就被关掉了,或者就是没有执行完。然后造成线程锁定。

    解决的办法:

    1.找出等待事件的原因
    select event,p1,p2,sid from v$session_wait where event not like 'SQL%' and event not like 'rdbms%';
    2.找出锁住的进程
    select object_id,session_id,locked_mode from v$locked_object;
    3.找出锁住的进程的操作系统进程
    select spid from v$process where addr=(select paddr from v$session where sid=19);(这个19表示被锁定的SID)
    4.在操作系统上删除进程
    orakill eoffice 2768(第一个参数据是数据库的SID  第二个参数是进程ID,这个数字就是上面取到的进程ID,这个是在Dos命令窗口下操作)


    下面是一个操作实例
    首先先Drop 相关的锁定的对象如Drop View vw_wf_CritCondition,然后结束PL/SQL Dev 再开一次才能执行下面的操作。

    SQL> select event,p1,p2,sid from v$session_wait where event not like 'SQL%' and event not like 'rdbms%';

    EVENT                                                                    P1         P2        SID
    ---------------------------------------------------------------- ---------- ---------- ----------
    null event                                                       1413697536          1         18
    null event                                                                1      95552         22
    pmon timer                                                              300          0          1
    smon timer                                                              300          0          5
    library cache lock                                                763239564  792075180         23   (这里表示有一个库被锁掉了。)
    wakeup time manager                                                       0          0          8

    6 rows selected

    SQL> select object_id,session_id,locked_mode from v$locked_object;

     OBJECT_ID SESSION_ID LOCKED_MODE
    ---------- ---------- -----------
            77         22           3
            69         22           3
            70         22           3
           316         22           3
           314         22           3
           356         22           3
            68         22           3
            72         22           3
            73         22           3
            74         22           3
            75         22           3

    11 rows selected

    SQL> select spid from v$process where addr=(select paddr from v$session where sid=22);

    SPID
    ------------
    3348

    在Dos操作,而且只能在安装数据的本机操作
    orakill eoffice 3348

  • 相关阅读:
    java根据图片路径下载到服务器方案 (转)
    什么是JSP (转)
    获取给定月中哪些天有聊天记录
    患者咨询服务区数据获取
    获取 不在当前设置录入状态,但是曾经设定过的测量指标 的最后测量日期
    MySQL 常用函数之——substr()
    MySql查询时间段的方法(转)
    MySQL 百万级分页优化(Mysql千万级快速分页)(转)
    mysql的sql分页函数limit使用 (转)
    MySql实现分页查询的SQL,mysql实现分页查询的sql语句 (转)
  • 原文地址:https://www.cnblogs.com/liubiqu/p/461778.html
Copyright © 2011-2022 走看看