从Oracle将事件放入Windows事件日志

时间:2019-05-15 19:30:35

标签: windows oracle

我正在尝试将事件从Oracle DBMS_SCHEDULER放入Windows事件日志中。

(我愿意接受其他方法,就我所读的内容而言,看起来DBMS_SCHEDULER是执行此操作的最佳选择。)

我做了很多研究,这似乎是在Oracle中运行Windows命令的基本结构:

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

并且创建了eventcreate ...因此,看来Oracle允许使用某些命令,但不允许其他命令。为什么?有办法解决吗?

我还尝试了其他一些操作,例如将eventcreate语句放入批处理文件中,然后从Oracle运行该批处理文件,这仍然是相同的错误。

我应该提到,直接在命令行中使用dir>testFile.txt运行完整的“作业操作”命令和参数会产生所需的结果。

在这一点上,我已经准备好使用C#或类似的东西编写一个基本应用程序,该应用程序将条目放入Windows事件日志并直接从Oracle运行可执行文件,而无需处理这些Windows命令

编辑:发布问题后,我确实做到了,但是现在我遇到了其他问题。请参见this question。)

我想念什么吗?

P.S。即使有效的{{1}}命令也需要大约1或2秒才能运行。花这么长时间才能运行这样的基本命令,这很奇怪。这让我觉得这里有些根本上是错误的。

0 个答案:

没有答案