【DB笔试面试491】如何判断一个存储过程是否正在运行?

  • 2019 年 10 月 11 日
  • 筆記

题目部分

在Oracle中,如何判断一个存储过程是否正在运行?

答案部分

有两种方式可以判断一个存储过程是否正在运行,其查询SQL语句分别如下所示,若有结果返回,则说明存储过程正在运行。

方法1:

SELECT A.SID,         B.SERIAL#,         A.OWNER,         A.OBJECT,         A.TYPE,         B.SERVER,         B.MODULE,         B.ACTION,         B.LOGON_TIME  FROM  V$ACCESS  A,         V$SESSION B  WHERE  A.SID = B.SID(+)  AND    A.TYPE = 'PROCEDURE'  AND    B.STATUS = 'ACTIVE'  AND    A.OBJECT = 'P_TEST_LHR' --注意这里修改成存储过程的名称  ;  

方法2:

SELECT *  FROM   V$DB_OBJECT_CACHE  WHERE  TYPE = 'PROCEDURE'  AND    NAME = 'P_TEST_LHR'  AND    LOCKS > 0  AND    PINS > 0;  

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。