天天看点

dbms_scheduler job 之外部命令

job_type 为 'EXECUTABLE' 是可以执行os命令或程序 我们可以来演示下

必须的权限:

SQL> grant create EXTERNAL job to test;

授权成功。

SQL> grant create job to test;

授权成功。
           

job_type为executable时,调用外部命令:

BEGIN
  dbms_scheduler.drop_job(job_name => 'scheduler_job_test');
END;
/
BEGIN
  dbms_scheduler.purge_log(job_name => 'scheduler_job_test');
END;
/
BEGIN
  dbms_scheduler.create_job(job_name        => 'scheduler_job_test',
                            job_type        => 'EXECUTABLE',
                            job_action      => 'cmd /c echo %date% %time% >> d:\job_test.txt',
                            start_date      => SYSDATE,
                            repeat_interval => 'FREQ=MINUTELY; INTERVAL=1;BYSECOND=0,5,10,15,20,25,30,35,40,45,50,55',
                            enabled         => TRUE);
END;
/
           

来看下效果

G:\Tools\Console2>type d:\job_test.txt
2014/08/15 周五 14:55:25.09
2014/08/15 周五 14:55:30.07
2014/08/15 周五 14:55:35.04
2014/08/15 周五 14:55:40.07
2014/08/15 周五 14:55:45.09
2014/08/15 周五 14:55:50.07
2014/08/15 周五 14:55:55.05
           

所以job的权限别随意放开啊,不然你懂得