对于Oracle的定时job我不是很了解,最近碰到个问题,之前别人写的定时Job现在好像不执行了,然后我找了半天问题也没找到,故此过来请教一下大家。
说明一下,这个存储过程里面涉及到将一个数据来源dblink的视图表里的数据添加到另外一张表里,不知道定时任务不执行是不是跟此有关。
麻烦大家知道的帮我找找问题,谢啦!
说明一下,这个存储过程里面涉及到将一个数据来源dblink的视图表里的数据添加到另外一张表里,不知道定时任务不执行是不是跟此有关。
麻烦大家知道的帮我找找问题,谢啦!
调试欢乐多
逻辑应该也没啥为题,下面是定时任务要执行的存储过来(是放在包里的):
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
create or replace package body UP_SOA_GET is
g_mess varchar2(1000); --定时任务
procedure p_clgl_job is
/***********************************
* 描述:定时任务 8:10 执行 同步车辆运行公里
* 参数
* 数据源:soa 八方达机务系统前置库 8点开始推送到前置库 5分钟之内
* 目标库:八方达机务系统本地库
* 步骤:1,取得同步日期
* 2,同步数据
************************************/
ret_out integer;
v_riqi varchar2(20);
begin
v_riqi := to_char(sysdate - 1, 'yyyy-mm-dd');
p_clgl(v_riqi, ret_out);
end; --同步数据 车辆行驶公里 从soa同步 160203
procedure p_clgl(in_riqi in varchar2, ret_out out integer) is
/***********************************
* 描述:同步数据 车辆行驶公里 从soa同步 160203
* 参数
* in_riqi in varchar2 日期 yyyy-mm-dd
* iret_out out integer 返回值 1 成功 -1 失败
* 目标表:T_SOA_CLGLB
* 原表 :v_soa_clglb
* 步骤:1,删除数据
* 2,插入数据
* 3,更新公司id
************************************/
v_date date;
begin
ret_out := 1;
v_date := to_date(in_riqi, 'yyyy-mm-dd');
g_mess := '删除指定日期数据:' || in_riqi;
delete from T_SOA_CLGLB where SJRQ = v_date;
g_mess := '插入指定日期数据:' || in_riqi;
insert into T_SOA_CLGLB
(CKCZLCID, SJRQ, CKCLID, CLZBH, CKJGID, YYLC, FYYLC, YXGL)
select ckczlcid, sjrq, ckclid, clzbh, ckjgid, yylc, fyylc, YXGL
from v_soa_clglb
where sjrq = v_date;
g_mess := '更新公司id:' || in_riqi;
update T_SOA_CLGLB t
set gsid = (select company_id
from t_core_vehicle v
where v.veh_code = t.clzbh
and V.veh_isdelete = 'F')
where sjrq = v_date;
commit;
exception
when others then
rollback;
ret_out := -1;
g_mess := g_mess || ',' || sqlerrm;
P_SAVE_MESSAGE(g_mess, UP_MT_CONSTANT.C_PROC_NO, 'p_clgl',
UP_MT_CONSTANT.C_MT_MAIN);
commit;
end;end UP_SOA_GET;
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑您看有问题吗?
其中v_soa_clglb这个视图,就是我说的那个dblink数据来源的
恩,我给T_SOA_CLGLB加了个触发器,只要删除、新增或修改都会往一个日志表里加日志,但是当定时任务执行时,这个日志表里没有日志信息,说明这三个操作一个都没有执行。
手工是可以的,那就是job问题了,可是job什么问题呢
手工是可以的,那就是job问题了,可是job什么问题呢
手工是可以的,那就是job问题了,可是job什么问题呢看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
手工是可以的,那就是job问题了,可是job什么问题呢
手工是可以的,那就是job问题了,可是job什么问题呢看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少==============================================================================================
我执行了一下,是10,这个数 有问题吗?
手工是可以的,那就是job问题了,可是job什么问题呢
手工是可以的,那就是job问题了,可是job什么问题呢看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少==============================================================================================
我执行了一下,是10,这个数 有问题吗?
改大点,改成100,如果job数量超过10,第11个就不会执行了alter system set job_queue_processes =100;
手工是可以的,那就是job问题了,可是job什么问题呢
手工是可以的,那就是job问题了,可是job什么问题呢看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少==============================================================================================
我执行了一下,是10,这个数 有问题吗?
改大点,改成100,如果job数量超过10,第11个就不会执行了alter system set job_queue_processes =100;==============================================================
噢,那我改一下再试试吧,O(∩_∩)O谢谢啦,麻烦你这么久
手工是可以的,那就是job问题了,可是job什么问题呢
手工是可以的,那就是job问题了,可是job什么问题呢看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少==============================================================================================
我执行了一下,是10,这个数 有问题吗?
改大点,改成100,如果job数量超过10,第11个就不会执行了alter system set job_queue_processes =100;==============================================================================================
还是不行,我倒是没把job_queue_processes改成100,我改的是30,
因为我这select count(1) from dba_jobs是19,然后就没改那么大
结果还是不行。
我在实际要执行的sql上自己又新加了个slq充当日志,
结果日志有,但是想让它执行的操作没有实现