我建了个job 定时执行一个过程job如下: begin
sys.dbms_job.submit(job => :job,
what => 'refresh;',
next_date => to_date('14-02-2012 06:31:06', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+12/24');
commit;
end;
/过程如下:
create or replace procedure refresh Is
v_msg Varchar2(500);
begin --防止视图失败,重新编译物化视图
execute immediate 'alter materialized view AAA compile'; --增量刷新物化视图
begin
dbms_mview.refresh('AAA');
Exception
When Others Then
v_msg := Sqlerrm;
end;
Commit; end refresh;1、从oracle中看该job是定时执行的,但是数据没有增量刷上来,手工test该过程是没问题的,数据都能刷上来!我现在想问下这个问题可能出在哪里?
sys.dbms_job.submit(job => :job,
what => 'refresh;',
next_date => to_date('14-02-2012 06:31:06', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+12/24');
commit;
end;
/过程如下:
create or replace procedure refresh Is
v_msg Varchar2(500);
begin --防止视图失败,重新编译物化视图
execute immediate 'alter materialized view AAA compile'; --增量刷新物化视图
begin
dbms_mview.refresh('AAA');
Exception
When Others Then
v_msg := Sqlerrm;
end;
Commit; end refresh;1、从oracle中看该job是定时执行的,但是数据没有增量刷上来,手工test该过程是没问题的,数据都能刷上来!我现在想问下这个问题可能出在哪里?
那是下次执行 在 '14-02-2012 06:31:06‘ 今天该job已经跑过了,只是数据没刷上来,现在手工runjob和 test那个过程都能刷上来数据,就是让它自动跑数据刷不上来,
sys.dbms_job.submit(job => :job,
what => 'refresh;',
next_date => to_date('14-02-2012 06:31:06', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+1/480');
commit;
end;改一下这个间隔时间,再试试。现改成 3分钟,执行一次。估计就能测试出来。
还是不行,我看user_job这张表里,last_date是2012-02-15 9:46:03
broken 是N
falures 是0
表明这个任务刚刚执行过啊,只是这个任务显示的是执行,但物化视图的增量没有刷上来!
declare test_job number;
begin
sys.dbms_job.submit(job => test_job, --调用的存储过程
what => 'test;', --调用的存储过程
next_date => to_date('15-02-2012 10:32:06', 'dd-mm-yyyy hh24:mi:ss'), --下一次执行时间
interval => 'SYSDATE + 30/(60*24*60)');--执行间隔
commit;
dbms_job.run(test_job);
end;
JOB 肯定是没错的 每天还在跑,但是增量数据没有刷上来!现在就是手工run那个job和 手工test那个过程,数据也上来。感觉很奇怪!
也是不能。必须run。我重启了后就好了。但是我是生产库不能重启。