说明一下,这个存储过程里面涉及到将一个数据来源dblink的视图表里的数据添加到另外一张表里,不知道定时任务不执行是不是跟此有关。
麻烦大家知道的帮我找找问题,谢啦!
18 个解决方案
#1
你单独手动执行一下,看看是不是报错了,连续报错16次,JOB会自动broken不执行了
#2
应该是执行成功了,您看一下截图
#3
应该是执行了,让他们检查一下逻辑;
#4
逻辑应该也没啥为题,下面是定时任务要执行的存储过来(是放在包里的):
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
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数据来源的
#5
P_SAVE_MESSAGE 这个是用来记录日志的吧?
把成功的部分,也记录一下日志,看看是否执行过;
把成功的部分,也记录一下日志,看看是否执行过;
#6
恩,我给T_SOA_CLGLB加了个触发器,只要删除、新增或修改都会往一个日志表里加日志,但是当定时任务执行时,这个日志表里没有日志信息,说明这三个操作一个都没有执行。
#7
怎么回事呢?
#8
肿么办呢???
#9
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
#10
手工是可以的,那就是job问题了,可是job什么问题呢
#11
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是job什么问题呢
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
#12
我执行了一下是10
#13
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
我执行了一下,是10
我执行了一下,是10
#14
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是job什么问题呢
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是job什么问题呢
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
==============================================================================================
我执行了一下,是10,这个数 有问题吗?
#15
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是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;
#16
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是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谢谢啦,麻烦你这么久
#17
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是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充当日志,
结果日志有,但是想让它执行的操作没有实现
#18
我也遇到同样的问题,你解决了吗?
#1
你单独手动执行一下,看看是不是报错了,连续报错16次,JOB会自动broken不执行了
#2
你单独手动执行一下,看看是不是报错了,连续报错16次,JOB会自动broken不执行了
应该是执行成功了,您看一下截图
#3
应该是执行了,让他们检查一下逻辑;
#4
应该是执行了,让他们检查一下逻辑;
逻辑应该也没啥为题,下面是定时任务要执行的存储过来(是放在包里的):
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
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数据来源的
#5
P_SAVE_MESSAGE 这个是用来记录日志的吧?
把成功的部分,也记录一下日志,看看是否执行过;
把成功的部分,也记录一下日志,看看是否执行过;
#6
P_SAVE_MESSAGE 这个是用来记录日志的吧?
把成功的部分,也记录一下日志,看看是否执行过;
恩,我给T_SOA_CLGLB加了个触发器,只要删除、新增或修改都会往一个日志表里加日志,但是当定时任务执行时,这个日志表里没有日志信息,说明这三个操作一个都没有执行。
#7
怎么回事呢?
#8
肿么办呢???
#9
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
#10
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是job什么问题呢
#11
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是job什么问题呢
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是job什么问题呢
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
#12
我执行了一下是10
#13
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
我执行了一下,是10
我执行了一下,是10
#14
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是job什么问题呢
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是job什么问题呢
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
==============================================================================================
我执行了一下,是10,这个数 有问题吗?
#15
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是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;
#16
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是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谢谢啦,麻烦你这么久
#17
你看看你手工执行,数据有添加吗,如果没有就是过程问题,如果有数据添加就是你job问题。先确认哪个问题
手工是可以的,那就是job问题了,可是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充当日志,
结果日志有,但是想让它执行的操作没有实现
#18
我也遇到同样的问题,你解决了吗?