无法处理SQL命令-Oracle作业计划程序
我正在尝试使用SQL Developer设置一个简单的计划作业,但无法设置作业,错误消息如下:- 无法处理SQL命令 开发者日志给了我两个条目无法处理SQL命令-Oracle作业计划程序,sql,oracle,plsql,scheduler,Sql,Oracle,Plsql,Scheduler,我正在尝试使用SQL Developer设置一个简单的计划作业,但无法设置作业,错误消息如下:- 无法处理SQL命令 开发者日志给了我两个条目 Level Seq Elaps Source Message SEVERE 32 62 oracle.dbtools.scheduler.generator.DBMSSchedulerCodeGenerator Can't find template CREATE_JOB_DES
Level Seq Elaps Source Message
SEVERE 32 62 oracle.dbtools.scheduler.generator.DBMSSchedulerCodeGenerator Can't find template CREATE_JOB_DESTINATION_CREDENTIAL.st
SEVERE 31 0 oracle.dbtools.scheduler.generator.DBMSSchedulerCodeGenerator Can't find template CREATE_JOB_DESTINATION_CREDENTIAL.st
这是作业的代码摘要,它是一个表中一行的简单更新,我只想每天在一个测试实例上测试一次
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB (
job_name => '"CHEROKEE_BACKUP".""',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN
alter table drawing disable all triggers;
update DRAWING set proj_id = 1, site_id = 1, chg_num = 0, plant_id = 1, unit_id = 1, user_name = ''INTOOLS'', dwg_type_id = 1, chg_status = ''W'', chg_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), dwg_num = 0, curr_rev_num = 0, dwg_title1 = '' '', dwg_title2 = '' '', dwg_title3 = '' '', dwg_name = '' '', ven_prop_by = '' '', ven_prop_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), ven_dsgn_by = '' '', ven_dsgn_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), ven_drwn_by = '' '', ven_drwn_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), ven_ck_by = '' '', ven_ck_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), ven_appr_by = '' '', ven_appr_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), cl_ck_by = '' '', cl_ck_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), cl_engr_by = '' '', cl_engr_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), cl_appr_by = '' '', cl_appr_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), area_id = 1, bmp_file_name = '' '', bmp_file_path = '' '', dwg_desc = '' '', output_dwg_fmt_id = 0, parent_id = 0, format_id = 0, rev_id = 0, eng_proj_id = 10, eng_ref_id = 10, merge_release_flg = ''N'' where dwg_id = 0;
alter table drawing enable all triggers;
commit;
END;',
number_of_arguments => 0,
start_date => TO_TIMESTAMP_TZ('2014-07-15 14:45:46 America/Chicago','YYYY-MM-DD HH24.MI.SS TZR'),
repeat_interval => 'FREQ=DAILY',
end_date => TO_TIMESTAMP_TZ('2014-07-31 14:45:46 America/Chicago','YYYY-MM-DD HH24.MI.SS TZR'),
job_class => '"SYS"."DEFAULT_JOB_CLASS"',
enabled => FALSE,
auto_drop => FALSE,
comments => '');
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"CHEROKEE_BACKUP".""',
attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"CHEROKEE_BACKUP".""',
attribute => 'max_run_duration', value => INTERVAL '1' HOUR);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"CHEROKEE_BACKUP".""',
attribute => 'schedule_limit', value => INTERVAL '1' HOUR);
SYS.DBMS_SCHEDULER.enable(
name => '"CHEROKEE_BACKUP".""');
END;
它所追求的模板是什么?为什么它找不到他们?我没有正确设置什么
我不知道您的错误消息中提到的模板,但我可以告诉您,您为作业运行的PL/SQL块无效,无法编译:
BEGIN
alter table drawing disable all triggers;
update DRAWING set proj_id = 1, site_id = 1, -- rest of line snipped
alter table drawing enable all triggers;
commit;
END;
这将无法编译,因为不能在PL/SQL中使用ALTER。要执行DDL,如CREATEALTER或DROP,需要使用execute IMMEDIATE
此外,DDL语句在执行之前和之后执行隐式提交,因此块中的提交语句是冗余的
请尝试以下操作:
BEGIN
execute immediate 'alter table drawing disable all triggers';
update DRAWING set proj_id = 1, site_id = 1, -- rest of line snipped
execute immediate 'alter table drawing enable all triggers';
END;
嗨,卢克,谢谢你的意见,真的很感激,在挖掘了更多信息之后,我认为这更像是一个特权问题,我试图在没有系统的情况下设置它,我不认为它喜欢这样!!