zoukankan      html  css  js  c++  java
  • 如何检测被锁住的Oracle存储过程及处理办法汇总(转)

    1.查看是哪一个存储过程被锁住
    查V$DB_OBJECT_CACHE视图
    select * from V$DB_OBJECT_CACHE where owner='过程的所属用户' AND LOCKS!='0'


    2.查看是哪一个sid,通过sid可以知道是哪一个session
    查v$access视图
    select * from v$access where owner='过程的所属用户' and name='刚才查到的过程名'
    3.查出sid和serial#
    查v$session视图
    select sid,serial#,paddr from v$session where sid='刚才查到的sid';
    查v$process视图
    select spid from v$process where addr='刚才查到的paddr';
    4.杀进程
    4.1先杀oracle进程
    alter system kill session '查出的sid,查出的serial#';
    4.2再杀操作系统进程
    如果是unix
    kill -9 刚查出的spid
    如果是windows
    orakill 刚查出的sid 刚查出的spid

    http://www.cnblogs.com/zwl715/p/3699124.html

    原因: 存储过程执行过程中,关闭或者中断存储过程,重新编译是等待时间很长,无法删除

    解决:

    先查出被锁定存储过程的spid

    SELECT spid

    FROM V$DB_OBJECT_CACHE   OC,

           V$OBJECT_DEPENDENCY OD,

           DBA_KGLLOCK         W,

           V$SESSION           S,

           V$PROCESS           P

          

    WHERE OD.TO_OWNER = OC.OWNER

       AND OD.TO_NAME = OC.NAME

       AND OD.TO_ADDRESS = W.KGLLKHDL

       AND W.KGLLKUSE = S.SADDR

       AND P.ADDR = S.PADDR

    AND OC.NAME = 'SP_PS_DATAWWTPFLOWSUM_U'//存储过程名称

    登陆被锁定存储过程所属Oracle的安装服务器, 开始->运行->CMD ,输入格式 orakill SID实例 SPID如:C:>orakill orcl 540

    http://www.cnblogs.com/zwl715/p/3699120.html

  • 相关阅读:
    连接数据库代码
    C/C++ Basicsfunction pointer
    MSMQ&Com+ Service: How to create an Com+ Service in .NetFramework
    C/C++ Basics>about #define, const
    EndpointAddress
    MSMQ Basics Transactional Messages Processing
    Thread Basics(thread synchronization&Asynchronization) part two
    Thread Basics using Timer to trigger Event at a specified internals
    FAQ about AJAXpart II
    FAQ about AJAXpart I
  • 原文地址:https://www.cnblogs.com/softidea/p/5336734.html
Copyright © 2011-2022 走看看