Oracle 创建定时任务
Oracle 提供了 DBMS_SCHEDULER 包来管理定时任务,可以用来定期执行 SQL 语句或 PL/SQL 块
1. 创建表
CREATE TABLE EXAMPLE_TABLE (ID NUMBER PRIMARY KEY,DATA VARCHAR2(100),CREATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. 创建任务
BEGINDBMS_SCHEDULER.create_job (job_name => 'delete_example_table_data', -- job名称job_type => 'PLSQL_BLOCK', -- 指定作业类型为PL/SQL代码块job_action => 'BEGIN DELETE FROM EXAMPLE_TABLE WHERE CREATE_TIME < CURRENT_TIMESTAMP -7; END;', -- 要执行的PL/SQL代码start_date => SYSTIMESTAMP, -- 开始时间repeat_interval => 'FREQ=DAILY; BYHOUR=0; BYMINUTE=0; BYSECOND=0', -- 重复周期为每天0点0分0秒 ,'FREQ=Minutely;Interval=5' 每隔5分钟执行一次enabled => TRUE -- 创建后立即启用作业);
END;
3. 查看任务
SELECT * FROM user_scheduler_jobs;
4. 删除任务
BEGINDBMS_SCHEDULER.drop_job (job_name => 'delete_example_table_data',force => TRUE -- 强制删除一个可能正在运行的任务);
END;
- 禁用任务
BEGINDBMS_SCHEDULER.DISABLE('delete_example_table_data');
END;