创建 Oracle 定时任务
功能说明: 要求实现数据库中的表数据每天午夜时分定时自动执行数据迁移动作。
?
1. 创建历史数据存储表(USER_TAB_BAK), 要求与源表(USER_TAB)结构一致;
?? for example:
?? create table USER_TAB_BAK(ID integer, varchar2(200),createdate date);
?
2. 编写数据迁移存储过程;
?? CREATE OR REPLACE USER_TAB_Data_Transfer as
???? begin
?????? Insert Into USER_TAB_BAK
?????? Select * From USER_TAB Where to_date(createdate,'yyyy-MM-dd')
?????? < to_date('2007-01-01', 'yyyy-MM-dd');
?????? Delete From USER_TAB Where to_date(createdate,'yyyy-MM-dd')
?????? < to_date('2007-01-01', 'yyyy-MM-dd');
???? end;
?
3. 创建Job, 定时(每天午夜时分)执行存储过程;
??DECLARE
?????? X NUMBER;
? BEGIN
???? SYS.DBMS_JOB.SUBMIT
???? (
????? job??????? =>?X
???? ,what?????? => 'USER_TAB_Data_Transfer;'
???? ,next_date? => to_date('01-07-2007 00:00:00','dd/mm/yyyy hh24:mi:ss')
???? ,interval?? => 'TRUNC(SYSDATE+1)'
???? );
?? END;
?
4. 启动Job.
?? begin
?????? SYS.DBMS_JOB.RUN(:X);
?? end;
(注:可以借助 Toad 或 DBArtisan 等工具快速创建Job,以减小错误的发生。)
附加:
Toad for Oracle 创建定时任务步骤:
a. 首先登录Toad, 点击菜单栏中的“Schema Browser”项, 再在打开的窗口中先找到“P() Procs”项,
??? 以创建存储过程。
b. 存储过程创建成功之后, 再找到“Jobs”项;
c.?进入“Jobs”标签页,?点击鼠标右键菜单中的 “Create Job”开始创建定时任务。
d. 在窗口页面中,需要输入自定义的任务名称, 所执行的存储过程名称, 以及设定开始执行的时间和定时执行的时间间隔。
e: 最后点击“OK”, Oracle 定时任务就创建成功了!