数据库定时任务

在web系统开发中,某些系统需要定时执行一些数据库操作。如定期删除数据,定期调用某个存储过程进行报表的统计信息处理等等操作。为了解决这个需求,可以参照如下的几个步骤晚上数据库的定时任务的操作。
1、创建需要定时执行的存储过程代码。
2、创建定时job任务。
可以参照如下例子:
CREATE OR REPLACE PROCEDURE drop_create_table
IS
str_sql varchar2(500);
v_count number;
BEGIN
select count(*) into v_count from user_tables where table_name='TABLENAME';
if v_count<>0 then
str_sql := 'drop table TABLENAME';
execute immediate str_sql;
end if;
str_sql := 'DYNAMIC SQL';
execute immediate str_sql;
EXCEPTION
when others then
null;
END drop_create_table;

--定时删除 每天凌晨执行一次的计划
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'drop_create_table;'
,next_date => to_date('26/09/2008 00:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'sysdate + 1'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
执行成功后,可以通过pl/sql客户端或者命令去验证执行是否成功
命令: select * from user_jobs
删除:dbms_jobs.remove('jobnum');

注意:时间如果设置一个未来时间,则第一次执行是再设置的时间点。往后累加间隔时间执行,如果设置的时间点未当前时间之前。则数据库会自动设置当前时间点为第一次执行时间。以当前时间点作为起始点执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库可以通过使用DBMS_SCHEDULER包来配置定时任务。下面是一些基本的步骤: 1. 创建一个JOB,指定它的名称和描述: ```sql BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'my_job', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN my_procedure; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=HOURLY; INTERVAL=1', enabled => TRUE, comments => 'This is my job' ); END; / ``` 这个例子创建了一个名为“my_job”的JOB,它是一个PL/SQL块,每小时运行一次,并且在创建后启用。 2. 如果需要,定义JOB的参数: ```sql BEGIN DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE ( job_name => 'my_job', argument_name => 'arg1', argument_value => 'value1' ); END; / ``` 这个例子设置了JOB的名为“arg1”的参数值为“value1”。 3. 如果需要,定义JOB的凭据: ```sql BEGIN DBMS_SCHEDULER.SET_JOB_CREDENTIAL ( job_name => 'my_job', credential_name => 'my_credential' ); END; / ``` 这个例子将名为“my_credential”的凭据分配给了“my_job”。 4. 修改JOB的属性: ```sql BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'my_job', attribute => 'max_run_duration', value => INTERVAL '1' HOUR ); END; / ``` 这个例子将“my_job”的最大运行时间设置为1小时。 5. 删除JOB: ```sql BEGIN DBMS_SCHEDULER.DROP_JOB ( job_name => 'my_job' ); END; / ``` 这个例子删除了名为“my_job”的JOB。 以上是一些基本的步骤,你可以根据自己的需求进行更改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值