Путь к файлу / имя файла запущенного скрипта оракула - PullRequest
0 голосов
/ 23 мая 2018

В целях аудита я хочу сохранить путь / имя файла сценария, используемого для создания строк.

Например, если я использую C: \ oracle_scripts \ my_oracle_script.sql для создания данных, тогдаЯ хочу иметь возможность хранить «C: \ oracle_scripts \ my_oracle_script.sql» в столбце, чтобы я мог знать, какой скрипт использовался для создания данных.

Есть ли «переменная сеанса» или что-то такое, что я могуиспользуется для динамического доступа к пути / имени файла запущенного скрипта без необходимости его жесткого кодирования?

1 Ответ

0 голосов
/ 24 мая 2018

Да и нет.Существует переменная сеанса, в которой хранится программа, выполняющая скрипт, которая хранится в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...