运行存储过程的Oracle计划作业 - 不运行

时间:2014-04-11 13:47:06

标签: oracle11g oracle-sqldeveloper

我有一个运行得很好的存储过程。首先,它创建一个databaselink(通过调用另一个存储过程),然后更新一个表,然后关闭链接。如您所见,我必须包含“authid current_user”子句。

create or replace PROCEDURE UPDATE_BATCHES
authid current_user
AS    
BEGIN
  databaselink(1);
  execute immediate ('update MYLOCALTABLE
                      set FLAG= 1
                      where FLAG = 0
                      and id in (select id from REMOTETABLE@LINK)');
  databaselink(0);


END UPDATED_BATCHES;

我一直在捕获异常并将它们写入日志 - 但我在尝试调试时删除了它,希望向调度程序抛出错误。它没有帮助。

我在调度程序中运行了一个工作。我在SQL Developer中使用了向导,但这是它生成的SQL。

BEGIN
    DBMS_SCHEDULER.CREATE_JOB (
            job_name => '"<SCHEMA-NAME>".""',
            job_type => 'STORED_PROCEDURE',
            job_action => '<SCHEMA-NAME>.UPDATE_BATCHES',
            number_of_arguments => 0,
            start_date => TO_TIMESTAMP_TZ('2014-03-06 09:37:53.000000000 AMERICA/NEW_YORK','YYYY-MM-DD HH24:MI:SS.FF TZR'),
            repeat_interval => 'FREQ=DAILY;BYHOUR=5;BYMINUTE=0;BYSECOND=0',
            end_date => NULL,
            enabled => TRUE,
            auto_drop => FALSE,
            comments => 'update the FLAG on the LOCAL table');


    DBMS_SCHEDULER.SET_ATTRIBUTE( 
             name => '"<SCHEMA-NAME>".""', 
             attribute => 'restartable', value => TRUE);


    DBMS_SCHEDULER.SET_ATTRIBUTE( 
             name => '"<SCHEMA-NAME>".""', 
             attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_FULL);
    DBMS_SCHEDULER.SET_ATTRIBUTE( 
             name => '"<SCHEMA-NAME>".""', 
             attribute => 'raise_events', value => '1');



    DBMS_SCHEDULER.enable(
             name => '"<SCHEMA-NAME>".""');
END;

预定作业似乎运行得很好。运行日志显示它每天早上运行 - 状态为“成功”。我没有收到错误消息。

但是,该表中的标志不会更新。如果我手动运行存储过程,它会按预期更新。只有在调度程序上运行时才会这样做。

这可能与权限有关吗?还有什么想法可以看看吗?

修改 我更新了程序,以便在执行更新后立即保存行计数。

rowsupd := sql%rowcount;
log_errors(p_error_message => 'total olvr batch rows updated: ' || TO_CHAR(rowsupd));

计划工作运行时没有结果。不是0计数 - 但是尽管作业日志显示成功运行,但表中没有任何内容。

但是,当我手动运行作业时,它成功更新了记录。我真的很困惑。

0 个答案:

没有答案