【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程序員面試筆試寶典》,作者:李華榮。