Я пытаюсь поместить событие в журнал событий Windows из Oracle DBMS_SCHEDULER.
(я открыт для других методов, из того, что я прочитал, похоже, что DBMS_SCHEDULER - лучший вариант для этого.)
Я провел немало исследований, и это, кажется, основная структура для запуска команд Windows в Oracle:
BEGIN
sys.dbms_scheduler.create_job(
job_name => 'TESTJOB',
job_type => 'EXECUTABLE',
job_action => 'C:\Windows\System32\cmd.exe',
job_class => 'DEFAULT_JOB_CLASS',
number_of_arguments => 3,
auto_drop => FALSE,
enabled => FALSE);
sys.dbms_scheduler.set_job_argument_value('TESTJOB', 1, '/q');
sys.dbms_scheduler.set_job_argument_value('TESTJOB', 2, '/c');
sys.dbms_scheduler.set_job_argument_value('TESTJOB', 3, '<desired command>');
sys.dbms_scheduler.enable('TESTJOB');
END;
Я попытался заменить <desired command>
на:
eventcreate /L Application /SO MyMessage /T Warning /id 218 /D "testing 123"
Однако это привело к следующей ошибке при попытке выполнить задание:
ORA-27369: job of type EXECUTABLE failed with exit code: Incorrect function.
Затем я изменил <desired command>
на это просто из любопытства, если он будет работать с другими командами:
dir>testFile.txt
И testFile.txt
был создан ... так что кажется, что Oracle допускает некоторые команды, но не другие. Зачем? Есть ли способ обойти это?
Я также попробовал несколько других вещей, например, поместив оператор eventcreate
в пакетный файл и затем запустив пакетный файл из Oracle, все та же ошибка.
Следует отметить, что выполнение полной команды "job action" и аргументов с eventcreate
непосредственно из командной строки дает желаемый результат.
На данный момент я в значительной степени готов бросить полотенце и просто написать простое приложение на C # или что-то подобное, которое помещает запись в журнал событий Windows и запускает исполняемый файл непосредственно из Oracle, не имея дело с этими командами Windows. .
( РЕДАКТИРОВАТЬ : после публикации вопроса я действительно сделал это, но теперь я сталкиваюсь с другими проблемами. См. этот вопрос .)
Я что-то упустил?
P.S. Даже работающая команда dir>testFile.txt
занимает примерно 1 или 2 секунды. Странно, что для выполнения такой основной команды требуется так много времени. Это заставляет меня думать, что здесь что-то в корне не так.