Übersicht
Oracle bietet das Package DBMS_APPLICATION_INFO an, um lang dauernde
PL/SQL Proceduren zu überwachen. Grundsätzlich muss sich die Procedure mit dem
DBMS_APPLICATION_INFO Package registrieren lassen, damit von "extern" der Zustand
überwacht werden kann.
Es stehen folgende Prozeduren zur Verfügung:
DBMS_APPLICATION_INFO.SET_CLIENT_INFO(client_info IN VARCHAR2)
DBMS_APPLICATION_INFO.SET_MODULE(module_name IN VARCHAR2,
action_name IN VARCHAR2)
DBMS_APPLICATION_INFO.SET_ACTION(action_name IN VARCHAR2)
Beispiel
Session 1 führt folgende Procedure aus:
CREATE OR REPLACE
PROCEDURE my_session_info AS
dummy NUMBER;
BEGIN
DBMS_APPLICATION_INFO.SET_CLIENT_INFO('This is a test');
DBMS_APPLICATION_INFO.SET_MODULE('my_module.sql','Updating test');
FOR i IN 1 .. 100000
LOOP
DBMS_APPLICATION_INFO.SET_ACTION('In loop at:
i='||TO_CHAR(i));
UPDATE mytest SET attr2='Test'||TO_CHAR(i) WHERE attr1=1;
IF MOD(i,50) = 0 THEN COMMIT; END IF;
END LOOP;
COMMIT;
END;
/
Session 2 kann nun kontrollieren wie weit Session 1 fortgeschritten ist:
select CLIENT_INFO,MODULE,ACTION from v$session
CLIENT_INFO
MODULE
ACTION
--------------------------- -------------------- --------------------
This is a test
my_module.sql
In loop at: i=46450
|