Você pode ter um procedimento que grava mensagens em uma tabela usando uma transação autônoma algo como:
procedure log (p_message)
is
pragma autonomous_transaction;
begin
insert into message_log (user, datetime, message)
values (user, sysdate, p_message);
commit;
end;
Em seguida, monitore a tabela de outra sessão do Oracle.