我知道,为了调度数据库表上的任何操作,我必须形成一个调度链,即连接计划(DBMS_SCHEDULER.CREATE_SCHEDULE)和程序(DBMS_SCHEDULER.CREATE_PROGRAM)的作业(作业)。但是,如果我只想通过一个程序和一个链接的任务来完成同样的任务呢?有可能吗?我试过了,当我检查程序日志时,它显示了:
RUNS FAILS
======================
10 10这意味着作业已经执行了10次(运行间隔为5秒)。而且它也失败了很多次。
以下是有关工作和计划的代码:
PROGRAM-CODE :
=================
BEGIN
SYS.DBMS_SCHEDULER.CREATE_PROGRAM
(
program_name => 'HR.INSERT_PROG'
,program_type => 'PLSQL_BLOCK'
,program_action => 'insert into sch_test values (s1.nextval,s2.nextval)'
,number_of_arguments => 0
,enabled => TRUE
,comments => NULL
);
END;
JOB-CODE :
==========
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'HR.JOB1'
,schedule_name => 'HR.INSERT_SCH'
,program_name => 'HR.INSERT_PROG'
,comments => NULL
);
END;相关的表永远不会被填充。如果有人能告诉我,我在这里做错了什么?如果没有时间表,就不能做到这一点吗?
发布于 2017-03-24 07:30:49
您不需要创建单独的程序和时间表,您可以将所有的内容都放在这样的工作中:
DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'HR.JOB1'
,start_date => LOCALTIMETAMP
,repeat_interval => 'FREQ=SECONDLY;INTERVAL=5'
,end_date => NULL
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => 'PLSQL_BLOCK'
,job_action => 'insert into sch_test values (s1.nextval,s2.nextval);'
,enabled => TRUE
);命名计划对象和命名程序对象只有在其中几个在复杂组合和依赖项中运行时才会有用。
https://stackoverflow.com/questions/42993461
复制相似问题