Oracle定時任務呼叫儲存過程

2021-07-05 21:32:29 字數 2981 閱讀 5038

--刪除core,cmnet,sp,miq,4張表一周之前的資料

create or replace procedure del_alarm_others_cancel_info as

begin

delete m_core_cancel where (sysdate-7) > ttime;

delete m_cmnet_cancel where (sysdate-7) > ttime;

delete m_sp_cancel where (sysdate-7) > ttime;

delete m_miq_cancel where (sysdate-7) > ttime;

delete m_core where state_type = 3 and (sysdate-7) > ttime;

delete m_cmnet where state_type = 3 and (sysdate-7) > ttime;

delete m_sp where state_type = 3 and (sysdate-7) > ttime;

delete m_miq where state_type = 3 and (sysdate-7) > ttime;

commit;

end del_alarm_others_cancel_info;

--刪除cell表一周之前的資料

create or replace procedure del_alarm_cell_cancel_info as

begin

delete m_cell_cancel where (sysdate-7) > ttime;

delete m_cell where state_type = 3 and (sysdate-7) > ttime;

commit;

end del_alarm_cell_cancel_info;

--oracle定時器

declare

job_cell number;

job_others number;

begin

dbms_job.submit(job_others, --定時器id,系統會自動獲得

'del_alarm_others_cancel_info;', -- 執行的過程名

sysdate, --定時器開始的時間

'sysdate+10/1440' --設定定時器執行頻率,每隔10分鐘執行一次

);dbms_job.submit(job_cell, --定時器id,系統會自動獲得

'del_alarm_cell_cancel_info;', -- 執行的過程名

sysdate+(3/24/60), --定時器開始的時間,延遲3分鐘執行

'sysdate+10/1440' --設定定時器執行頻率,每隔10分鐘執行一次

);commit;

end;

-- 啟動定時器

begin dbms_job.run(29); end;

/begin dbms_job.run(30); end;

--停止定時器

begin dbms_job.broken(29,sys.diutil.int_to_bool(1)); end;

/begin dbms_job.broken(30,sys.diutil.int_to_bool(1)); end;

--說明:

--1、查job程序:

show parameter job_queue_process;

select * from v$parameter t where t.name like 'job%';

--2、修改job程序:

alter system set job_queue_processes = 5;

---------------------------------------

--檢視排程任務

select *from user_jobs;

--檢視正在執行的排程任務

select *from dba_jobs_running;

--檢視執行完的排程任務

select *from dba_jobs;

定時器的引數說明:

myjob引數是由submit()過程返回的binary_ineger。這個值用來唯一標識乙個工作;

what引數是將被執行的pl/sql**塊,這裡指的是乙個儲存過程,注意名字後面的分號;

next_date引數指識何時將執行這個工作。寫job的時候可以不指定該值;

interval引數何時這個工作將被重執行。

1、 每分鐘執行

interval => trunc(sysdate,』mi』) + 1 / (24*60)

2、 每天定時執行

例如:每天的凌晨2點執行

interval => trunc(sysdate) + 1 +2 / (24)

3、 每週定時執行

例如:每週一凌晨2點執行

interval => trunc(next_day(sysdate,2))+2/24 --星期一,一周的第二天

4、 每月定時執行

例如:每月1日凌晨2點執行

interval =>trunc(last_day(sysdate))+1+2/24

5、 每季度定時執行

例如每季度的第一天凌晨2點執行

interval => trunc(add_months(sysdate,3),'q') + 2/24

6、 每半年定時執行

例如:每年7月1日和1月1日凌晨2點

interval => add_months(trunc(sysdate,'yyyy'),6)+2/24

7、 每年定時執行

例如:每年1月1日凌晨2點執行

interval =>add_months(trunc(sysdate,'yyyy'),12)+2/24

引用:

oracle 定時任務

在pl sql 中執行命名 第一步 開啟乙個sql window 視窗,建立一張測試表 create table test date a date 第二步 建立儲存過程 create or replace procedure test myproc asbegininsert into test d...

oracle定時任務

1.建立儲存過程 create orreplace procedure proc test isbegin insert into test values 1 2 commit end prc job test 2.建立任務 declare job number begin sys.dbms job...

Oracle定時任務

建立表 create table test carno varchar2 30 carinfoid number 建立儲存過程 create or replace procedure pro test ascarinfo id number begin select s carinfoid.next...