Что если я захочу получить доступ к файлу sh,
который выполняет некоторую обработку ОС
Существует три способа запуска ОС из базы данных.
Внешние процедуры, которые являются обертками PL / SQL для библиотек ОС, написанных на C или Java. Доступно с Oracle 8.0. Узнайте больше .
Хранимая процедура Java, эмулирующая команду host
. Это свернутая вручную оболочка Java Runtime
. Эта команда будет выполняться с мощными привилегиями пользователя ОС oracle
, поэтому не подвергайте эту процедуру общему использованию. Вместо этого имейте защищенного пользователя, и пишите хранимые процедуры, чтобы раскрыть определенные элементы функциональности ОС (например, процедуру для выполнения mkdir
, функцию для выполнения ls
). Возможно начиная с Oracle 8i. Узнайте больше .
DBMS_SCHEDULER. Помимо фоновых заданий базы данных мы можем использовать запланированные для запуска заданий ОС. Доступно с Oracle 10g. Узнать больше
Из этих трех вариантов, DBMS_SCHEDULER, вероятно, является наиболее безопасным вариантом. Как следует из названия, он предназначен для запуска программ по времени (например, Unix cron
), поэтому он не подходит для запуска по требованию (скажем, через триггер). Однако может случиться так, что ваша бизнес-логика может быть удовлетворена без необходимости триггера. Внешние процедуры не предназначены для запуска сценариев оболочки.
Внешние программы, будучи внешними, требуют больше усилий для координации с компонентами базы данных. Это применимо при выпуске новых версий приложения и создании резервных копий. Они также могут создавать проблемы, когда (скажем) среда разработки и живая среда находятся на разных платформах.
Очень плохая идея - заставить базу данных выполнить произвольный код. В большинстве сценариев все, что требуется, - это механизм передачи параметров в исполняемый файл.