Внутри вашего триггера напишите следующее:
select
terminal,
username,
osuser,
program
into
svTerminal, svUserName, svOSUser, svProgram
from
v$session
where
audsid=SYS_CONTEXT('USERENV','SESSIONID');
if svProgram <> 'MyApplicationTitle' then
raise oracle error
end if;
Вы также можете увидеть, какие другие переменные доступны, если выполнить этот запрос:
select * form v$session;
если триггер не компилируется, вы должны предоставить разрешение на выбор пользователю, у которого есть триггер для v $ session. Вы делаете это, выполняя следующее как system:
grant select on sys.v_$session to <username>;
Обновление: подчеркивание в v_ $ session не является ошибкой. Это реальное имя внутри sys, где можно дать грант. V $ session - это псевдоним, который вы можете использовать в запросах.