繁体   English   中英

Oracle Job Scheduler(创建运行DOS命令的本地外部作业):无法执行Rscript.exe或javac.exe

[英]Oracle Job Scheduler(Creating a Local External Job That Runs a DOS Command) : couldn't execute Rscript.exe or javac.exe

test.bat的

mkdir C:\Users\user\aaTEST2
javac Test.java
Rscript C:\Users\user\a.R

上面是我的蝙蝠文件。 当我通过在窗口命令上键入来执行bat文件时,它进行得很好。 但是当我执行oracle job Scheduler时:

BEGIN

DBMS_SCHEDULER.CREATE_JOB(
   job_name             => 'TEST_JOB2',
   job_type             => 'EXECUTABLE',
   number_of_arguments  => 3,
   job_action           => 'C:\windows\system32\cmd.exe',
   auto_drop            => FALSE);


DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('TEST_JOB2',1,'/c');
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('TEST_JOB2',2,'C:\Users\user\test.bat');
DBMS_SCHEDULER.ENABLE('TEST_JOB2');

END;

它的执行无需执行javac和Rscript。 只有mkdir有效。 为什么? 问题是什么? 我的oracle版本12.1.0.1.0。

使用以下代码在创建作业之前创建凭据

BEGIN
   DBMS_CREDENTIAL.CREATE_CREDENTIAL(
      CREDENTIAL_NAME  =>  'credintial',   ----- credintial name give by u
     USERNAME         =>  'dons',           ----- os username
     PASSWORD         =>  'password');    ----- os password
END;
/


BEGIN
        DBMS_SCHEDULER.CREATE_JOB 
          (JOB_NAME=>'loader_file',       --- job name 
          JOB_ACTION=>'/home/oracle/loader.sh',    --- executable file with path 
          JOB_TYPE=>'executable',        -----   job type
          NUMBER_OF_ARGUMENTS=>7,  --  parameters in numbers 
          ENABLED=>false,                   
          AUTO_DROP =>true,
          CREDENTIAL_NAME=>'credintial',   -- give credentials name which you have created before "credintial"
          COMMENTS=> 'loader_file scheduler ');
          DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME =>'loader_file', ARGUMENT_POSITION => 1, ARGUMENT_VALUE => 'para 1');
          DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME =>'loader_file', ARGUMENT_POSITION => 2, ARGUMENT_VALUE => 'para 2');
          DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME =>'loader_file', ARGUMENT_POSITION => 3, ARGUMENT_VALUE => 'para 3');
          DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME =>'loader_file', ARGUMENT_POSITION => 4, ARGUMENT_VALUE => 'para 4');
          DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME =>'loader_file', ARGUMENT_POSITION => 5, ARGUMENT_VALUE => 'para 5');
          DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME =>'loader_file', ARGUMENT_POSITION => 6, ARGUMENT_VALUE => 'para 6');
          DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME =>'loader_file', ARGUMENT_POSITION => 7, ARGUMENT_VALUE => 'para 7');
          DBMS_SCHEDULER.RUN_JOB('loader_file');
end;
/


begin 
DBMS_SCHEDULER.DROP_JOB('loader_file'); 
end;
/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM