ich folgenden JobJob-Scheduler Problem in Oracle
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;
erstellt habe, kann ich den Job sehen hat
select job_name, enabled from user_scheduler_jobs;
JOB_NAME ENABL
------------------------------ -----
DAILY_BACKUP TRUE
aktiviert wurde ich das Ausführungsprotokoll in user_SCHEDULER_JOB_LOG sehen kann, wie gut
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
Die zweite Zeile in user_scheduler_job_log wurde erstellt, als ich den Job manuell ausgeführt habe.
, aber die Tabellendaten, die durch die Prozedur db_backup aktualisiert werden sollten, werden nicht aktualisiert. Die Tabellendaten aktualisiert wird, wenn ich den Job manuell ausführen mit
exec dbms_scheduler.run_job('DAILY_BACKUP');
ich die Parameterebene Prüfung in dieser URL Anzahl der Prozesse vorgeschlagen getan haben, die Anzahl der Sitzungen scheinen in Ordnung zu sein.
https://community.oracle.com/thread/648581
Ich habe vielleicht sehr einfach, was fehlt, führen Sie mich freundlich, was mit meinem Job ist falsch? Hier
ist der Code für 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;
Könnten Sie bitte den Inhalt der Prozedur 'db_backup' bereitstellen? – JSapkota
Hallo @JSapkota Ich habe den Code für db_backup in der Frage – Prem
hinzugefügt * start_date => sysdate *. Vielleicht brauchst du set * to_timestamp (to_char (sysdate, 'dd.mm.yyyy') || '23:00:00', 'dd.mm.yyyy hh24: mi: ss') * – SkyWalker