對于Oracle的定時job我不是很了解,最近碰到個問題,之前別人寫的定時Job現在好像不執行了,然后我找了半天問題也沒找到,故此過來請教一下大家。
說明一下,這個存盤程序里面涉及到將一個資料來源dblink的視圖表里的資料添加到另外一張表里,不知道定時任務不執行是不是跟此有關。
麻煩大家知道的幫我找找問題,謝啦!
uj5u.com熱心網友回復:
你單獨手動執行一下,看看是不是報錯了,連續報錯16次,JOB會自動broken不執行了uj5u.com熱心網友回復:
應該是執行成功了,您看一下截圖
uj5u.com熱心網友回復:
應該是執行了,讓他們檢查一下邏輯;uj5u.com熱心網友回復:
邏輯應該也沒啥為題,下面是定時任務要執行的存盤過來(是放在包里的):
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
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資料來源的
uj5u.com熱心網友回復:
P_SAVE_MESSAGE 這個是用來記錄日志的吧?把成功的部分,也記錄一下日志,看看是否執行過;
uj5u.com熱心網友回復:
恩,我給T_SOA_CLGLB加了個觸發器,只要洗掉、新增或修改都會往一個日志表里加日志,但是當定時任務執行時,這個日志表里沒有日志資訊,說明這三個操作一個都沒有執行。
uj5u.com熱心網友回復:
怎么回事呢?uj5u.com熱心網友回復:
腫么辦呢???
uj5u.com熱心網友回復:
你看看你手工執行,資料有添加嗎,如果沒有就是程序問題,如果有資料添加就是你job問題。先確認哪個問題uj5u.com熱心網友回復:
手工是可以的,那就是job問題了,可是job什么問題呢
uj5u.com熱心網友回復:
你看看你手工執行,資料有添加嗎,如果沒有就是程序問題,如果有資料添加就是你job問題。先確認哪個問題
手工是可以的,那就是job問題了,可是job什么問題呢
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
uj5u.com熱心網友回復:
我執行了一下是10uj5u.com熱心網友回復:
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少我執行了一下,是10
uj5u.com熱心網友回復:
你看看你手工執行,資料有添加嗎,如果沒有就是程序問題,如果有資料添加就是你job問題。先確認哪個問題
手工是可以的,那就是job問題了,可是job什么問題呢
你看看你手工執行,資料有添加嗎,如果沒有就是程序問題,如果有資料添加就是你job問題。先確認哪個問題
手工是可以的,那就是job問題了,可是job什么問題呢
看看select value from v$parameter where name like '%job_queue_processes%' ,的值是多少
==============================================================================================
我執行了一下,是10,這個數 有問題嗎?
uj5u.com熱心網友回復:
你看看你手工執行,資料有添加嗎,如果沒有就是程序問題,如果有資料添加就是你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;
uj5u.com熱心網友回復:
你看看你手工執行,資料有添加嗎,如果沒有就是程序問題,如果有資料添加就是你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謝謝啦,麻煩你這么久
uj5u.com熱心網友回復:
你看看你手工執行,資料有添加嗎,如果沒有就是程序問題,如果有資料添加就是你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充當日志,
結果日志有,但是想讓它執行的操作沒有實作
uj5u.com熱心網友回復:
我也遇到同樣的問題,你解決了嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/83879.html
標籤:開發
上一篇:一個表中的一個欄位在另外兩個表(結構一樣)中關聯,怎樣一次性將兩表資料都查出來
下一篇:資料庫監聽日志一直在刷報錯
