Oracle PL/SQL monitor каталог для новых файлов


Я начну с того, что я новичок в работе с Oracle, поэтому, хотя я искал это без удачи, возможно, мне не хватает правильной терминологии.

То, что я пытаюсь сделать, - это использовать базу данных Oracle и PLSQL, чтобы отслеживать указанный каталог и при добавлении нового файла вызывать функцию в базе данных для обработки этого файла. Возможно ли это сделать с помощью PLSQL, если да, то любое руководство о том, где я должен искать, будет очень полезно оцененный.

Сатал

3 2

3 ответа:

Если вы используете Oracle 11g, вы можете использовать новую функцию File Watcher в Oracle Scheduler.

Http://docs.oracle.com/cd/E11882_01/server.112/e25494/scheduse005.htm#CIAJIADA

Http://www.oracle-base.com/articles/11g/scheduler-enhancements-11gr2.php#file_watcher

Для просмотра операционной системы требуется утилита ОС. Существует два способа интеграции ОС и базы данных.

Гоните это из ОС
Старый подход skool заключается в написании сценария оболочки, который выполняет ls против целевого каталога и инициирует сеанс SQL*Plus для вызова хранимой процедуры, которая обрабатывает любой найденный файл. Используйте cron для регулярного вызова этого скрипта. (Замените Windows-эквиваленты этих программ).

Привод из базы данных
Подход nu skool заключается в том, что хранимая процедура запускает все. Нет встроенного Oracle для поиска в каталоге ОС, но это можно сделать с помощью хранимой процедуры Java, которая вызывает исполняемый файл ОС. Модель безопасности Java немного сложна, но эта техника работает очень хорошо. Узнайте больше . Напишите процедуру PL / SQL, чтобы вызвать JSP и обработать файл, если что-то будет найдено. Эта процедура выполняется из DBMS_JOB, который запускается на на регулярной основе.

Вариант этого подхода, доступный начиная с 10g, заключается в использовании DBMS_SCHEDULER. Мы можем создатьзадание, которое выполняет команду ОС исвязать его с другим заданием , чтобы обработать файл, если первое задание найдет что-нибудь.

Взгляните на utl_file package

Также посмотреть на этого вопрос AskTom