Да и нет.Существует переменная сеанса, в которой хранится программа, выполняющая скрипт, которая хранится в V$SESSION.PROGRAM
, но не в имени файла скрипта.
Однако переменная сеанса, наиболее часто используемая для вашей цели, называется DBMS_APPLICATION_INFO.METHOD
.Он не связан со скриптами, но может использоваться и другими методами ввода (данные изменяются с помощью графического интерфейса и т. Д.).
Чтобы использовать его, вы установите значение в вашем скрипте
DBMS_APPLICATION_INFO.SET_MODULE('my_oracle_script.sql','');
и прочитаете его внутри базы данных, например, в триггере, с помощью
DBMS_APPLICATION_INFO.READ_MODULE()
Кроме того, есть две другие переменные сеанса ACTION
и CLIENT_INFO
.
Эти переменные даже отслеживаются в представлениях словаря данных V$SESSION
и V$SQLAREA
, поэтому, если сценарий выполняется слишком долго илиС другой стороны, администратор БД может легко отслеживать сеанс и выполненный SQL сценария.
Примеры и дополнительную информацию по https://docs.oracle.com/database/121/ARPLS/d_appinf.htm#ARPLS65225