2014-07-15 55 views
0

我試圖建立與SQL Developer的一個簡單的預定工作,但它未能與錯誤信息設置的作業了: -無法處理SQL命令 - Oracle作業調度

無法處理SQL命令

開發者日誌給了我兩個條目...

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; 

它後面的模板是什麼?爲什麼它找不到它們?我沒有正確設置什麼?

任何指導讚賞更大

回答

0

我不知道你的錯誤消息中提到的模板什麼,但我可以告訴你,你的工作運行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; 

這不會編譯,因爲ALTER不能在PL/SQL中使用。要執行DDL如CREATEALTERDROP,則需要使用EXECUTE IMMEDIATE

此外,DDL語句在執行前後執行隱式提交,因此塊中的commit語句是多餘的。

嘗試以下操作來代替:

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; 
+0

嗨盧克,感謝您的輸入,真的很感激,挖約多一點,我認爲這更多的是特權的問題後,我試圖設置此而不SYS/SYSTEM,我不認爲它喜歡! – TheHoggleDog