判斷某過程是否在執行的方法

jolly10發表於2008-06-04

之前用的是v$access檢視來判斷:

SELECT COUNT(*) INTO v_num FROM v$access a,v$session b
WHERE a.SID=b.SID
AND a.OBJECT = UPPER(p_process);

其實不用關聯v$session檢視.

今日看tom的書(9i&10g程式設計藝術 P216)又發現一個新的方法:

透過DBA_DLL_LOCKS檢視,這個檢視10g以前需要手工執行catblock.sql指令碼來建立.

此檢視實際上是記錄某個物件的可中斷解析鎖的資訊,也就是當一個session呼叫某個過程時,就會在這個過程上加上一個鎖以防止其它session對其編譯和修改.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1005174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章