2016-09-28 6 views
0

Я создал следующую работуработа проблема планировщик оракула

begin 
dbms_scheduler.create_job(
    job_name => 'DAILY_BACKUP', 
    job_type => 'STORED_PROCEDURE', 
    job_action => 'DB_BACKUP', 
    start_date => sysdate, 
    repeat_interval => 'FREQ=DAILY; BYHOUR=23', 
    enabled => TRUE, 
    comments => 'Runtime: Every day at 11:00 pm'); 
end; 

Я могу видеть работу включена

select job_name, enabled from user_scheduler_jobs; 
JOB_NAME      ENABL 
------------------------------ ----- 
DAILY_BACKUP     TRUE 

Я могу видеть журнал выполнения в user_SCHEDULER_JOB_LOG а

select log_date, substr(job_name, 1, 30)job_name, owner, status from user_SCHEDULER_JOB_LOG; 
    LOG_DATE                 JOB_NAME                             OWNER       STATUS 
--------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------ ------------------------------ ------------------------------ 
26-SEP-16 11.54.14.755972 PM +00:00           DAILY_BACKUP                            BACKUP       SUCCEEDED 
27-SEP-16 02.02.32.603195 AM +00:00           DAILY_BACKUP                            BACKUP       SUCCEEDED 
27-SEP-16 11.54.14.835203 PM +00:00           DAILY_BACKUP                            BACKUP       SUCCEEDED 

Вторая строка в user_scheduler_job_log была создана, когда я запускал задание вручную.

но данные таблицы, которые должны были быть обновлены процедурой db_backup, не обновляются. Данные таблицы обновляются при запуске задания вручную с помощью

 exec dbms_scheduler.run_job('DAILY_BACKUP'); 

Я сделал чек уровня параметров предложил в этом URL числа процессов, количество сеансов, кажется, в порядке.

https://community.oracle.com/thread/648581

я мог бы не хватало очень простой вещи, любезно наставит меня, что случилось с моей работой?

Вот код для db_backup

create or replace procedure db_backup as 

cursor cur_listOfTables is 
    select table_name from backuplog where backup_flag = 'Y'; 

    v_truncate_query varchar2(4000); 
v_insert_query varchar2(4000); 
v_current_function varchar2(200); 

v_disable_constraint_success number := 0; 
v_truncate_success number := 0; 
v_insert_success number := 0; 
v_enable_constraint_success number := 0; 

v_schema_to_backup varchar2(50) := 'PRODSCHEMA'; 

begin 

    v_current_function := $$PLSQL_UNIT; 

    v_disable_constraint_success := alter_all_fk_constraints(v_schema_to_backup, 'D'); 

    for backup_rec in cur_listOfTables 
    loop 
    v_truncate_query := 'truncate table ' || backup_rec.table_name; 

    v_insert_query := 'insert into ' || backup_rec.table_name || ' select * from ' || backup_rec.table_name || '@prod'; 

    --v_disable_constraint_success := alter_fk_constraints(backup_rec.table_name, 'D'); 

    if v_disable_constraint_success = 0 then 
      begin 
        execute immediate v_truncate_query; 
        exception 
          when others then 
            log_error(v_current_function, backup_rec.table_name, sqlcode, sqlerrm); 
            v_truncate_success := 1; 
      end; 

      if v_truncate_success = 0 then 
        begin 
          execute immediate v_insert_query; 
          exception 
            when others then 
            log_error(v_current_function, backup_rec.table_name, sqlcode, sqlerrm); 
            v_insert_success := 1; 
        end; 
        if v_insert_success = 0 then 
          update backuplog set last_backup_date = sysdate where table_name = backup_rec.table_name; 
          commit; 
        end if; 
      end if; 

      --v_enable_constraint_success := alter_fk_constraints(backup_rec.table_name, 'E'); 

    end if; 

    --dbms_output.put_line(v_truncate_query); 
    --dbms_output.put_line(v_insert_query); 
end loop; 


    v_enable_constraint_success := alter_all_fk_constraints(v_schema_to_backup, 'E'); 
reset_all_sequences(v_schema_to_backup); 

end; 
+0

Не могли бы вы предоставить содержание процедуры 'db_backup'? – JSapkota

+0

Привет @JSapkota Я добавил код для db_backup в вопрос – Prem

+0

* start_date => sysdate *. Возможно, вам нужно установить * to_timestamp (to_char (sysdate, 'dd.mm.yyyy') || '23:00:00', 'dd.mm.yyyy hh24: mi: ss') * – SkyWalker

ответ

0

Спасибо за ваше время, чтобы посмотреть на мою проблему и предложить обходные пути. Фактически я просто добавил имя схемы в атрибут job_action, и работа выполнялась нормально.

Смежные вопросы