Я вижу две возможности.
Либо вы пишете процедуру, которая вставляет сообщения журнала в таблицу. Объявите эту процедуру с PRAGMA AUTONOMOUS_TRANSACTION
:
CREATE OR REPLACE PROCEDURE WriteLogMsg(LogMessage IN VARCHAR2) IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO T_LOG_ENTRIES (LOG_DATE, LOG_MESSAGE)
VALUES (CURRENT_TIMESTAMP, LogMessage);
COMMIT;
END WriteLogMsg;
Или используйте пакет DBMS_APPLICATION_INFO
:
PROCEDURE LONG_RUNNING_PROCEDURE IS
BEGIN
DBMS_APPLICATION_INFO.SET_MODULE('LONG_RUNNING_PROCEDURE', 'Starting');
...
DBMS_APPLICATION_INFO.SET_ACTION('Still working, please be patient');
...
DBMS_APPLICATION_INFO.SET_ACTION('Finished');
-- DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL); -> removes entries for MODULE and ACTION
END;
Во время выполнения процедуры вы можете запросить информацию с помощью
SELECT USERNAME, MODULE, ACTION
from V$SESSION
where USERNAME = ...;