一、基礎(chǔ)
1藕溅、Oracle定時(shí)器
Oracle定時(shí)器:定時(shí)執(zhí)行某個(gè)存儲(chǔ)過(guò)程棚壁。
通過(guò)pl/SQL的圖形化界面可以看到杯矩。定時(shí)器包括:調(diào)度和存儲(chǔ)過(guò)程連接口
2、存儲(chǔ)過(guò)程連接口
存儲(chǔ)過(guò)程連接口灌曙,主要告訴定時(shí)器要執(zhí)行哪一個(gè)存儲(chǔ)過(guò)程菊碟。存儲(chǔ)過(guò)程連接口就是存儲(chǔ)過(guò)程執(zhí)行的入口。從圖形化界面可以看出“Action”就是要執(zhí)行的存儲(chǔ)過(guò)程在刺。而“Arguments”就是調(diào)用該存儲(chǔ)過(guò)程所需要的參數(shù)類型及存儲(chǔ)過(guò)程所調(diào)用的必須參數(shù)逆害。
3、存儲(chǔ)過(guò)程
存儲(chǔ)過(guò)程(Stored Procedure)是在大型數(shù)據(jù)庫(kù)系統(tǒng)中蚣驼,一組為了完成特定功能的SQL 語(yǔ)句集魄幕,存儲(chǔ)在數(shù)據(jù)庫(kù)中經(jīng)過(guò)第一次編譯后再次調(diào)用不需要再次編譯,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它颖杏。存儲(chǔ)過(guò)程是數(shù)據(jù)庫(kù)中的一個(gè)重要對(duì)象纯陨,任何一個(gè)設(shè)計(jì)良好的數(shù)據(jù)庫(kù)應(yīng)用程序都應(yīng)該用到存儲(chǔ)過(guò)程。
4留储、調(diào)度
調(diào)度最主要的功能就是告訴定時(shí)器神什么時(shí)候執(zhí)行定時(shí)任務(wù)翼抠,執(zhí)行的任務(wù)的頻率是多久。
二获讳、腳本展示
1阴颖、創(chuàng)建可執(zhí)行程序
DBMS_SCHEDULER.CREATE_PROGRAM(
program_name =>'peace_sj_his.PROG_DATASYNC',
program_action =>'peace_sj_his.P_DATASYNC',
program_type =>'STORED_PROCEDURE',
number_of_arguments =>3,
comments =>'數(shù)據(jù)同步程序',
enabled => false
);
end;```
###2、設(shè)置可執(zhí)行程序的輸入?yún)?shù)
```begin
DBMS_SCHEDULER.define_program_argument(
program_name =>'peace_sj_his.PROG_DATASYNC',
argument_position =>1,
argument_type =>'VARCHAR2',
default_value =>''
);
DBMS_SCHEDULER.define_program_argument(
program_name =>'peace_sj_his.PROG_DATASYNC',
argument_position =>2,
argument_type =>'VARCHAR2',
default_value =>''
);
DBMS_SCHEDULER.define_program_argument(
program_name =>'peace_sj_his.PROG_DATASYNC',
argument_position =>3,
argument_type =>'VARCHAR2',
default_value =>''
);
END;
3丐膝、創(chuàng)建調(diào)度表
DBMS_SCHEDULER.create_schedule(
schedule_name =>'peace_sj_his.SCH_DATASYNC',
repeat_interval =>'FREQ=MINUTELY;INTERVAL=2',
start_date => sysdate,
comments =>'數(shù)據(jù)同步調(diào)度'
);
end;
4量愧、創(chuàng)建作業(yè)
DBMS_SCHEDULER.create_job(
job_name =>'peace_sj_his.JOB_PPTN',
program_name =>'peace_sj_his.PROG_DATASYNC',
schedule_name =>'peace_sj_his.SCH_DATASYNC',
job_class =>'DEFAULT_JOB_CLASS',
comments =>'雨量數(shù)據(jù)同步作業(yè)',
auto_drop => false,
enabled => false
);
end;
5、啟動(dòng)可執(zhí)行程序
exec DBMS_SCHEDULER.enable('PROG_DATASYNC');
6帅矗、啟動(dòng)作業(yè)
exec DBMS_SCHEDULER.enable('JOB_PPTN');
7偎肃、設(shè)置不同的作業(yè)參數(shù)
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
job_name =>'peace_sj_his.JOB_PPTN',
argument_position =>1,
argument_value =>'ST_PPTN_R'
);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
job_name =>'peace_sj_his.JOB_PPTN',
argument_position =>2,
argument_value =>'TM'
);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
job_name =>'peace_sj_his.JOB_PPTN',
argument_position =>3,
argument_value =>'STCD'
);
end;```
#三、Job管理
** 禁用Job **
```exec dbms_scheduler.disable('JOBTEST');```
** 執(zhí)行Job **
```exec dbms_scheduler.run_job('JOBTEST'); ```
** 停止Job **
```exec dbms_scheduler.stop_job('JOBTEST');```
**刪除Job**
```exec dbms_scheduler.drop_job('JOBTEST');```