oracle 定时任务 怎么写
时间: 2023-07-04 17:04:53 浏览: 98
Oracle 中可以使用 DBMS_SCHEDULER 包来创建和管理定时任务。
下面是一个简单的例子,演示了如何创建一个每天晚上 10 点运行的定时任务:
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=DAILY; BYHOUR=22;',
enabled => TRUE,
comments => 'Runs my_procedure every day at 10 PM');
END;
/
```
在上面的代码中,我们使用 CREATE_JOB 子程序创建了一个名为 my_job 的作业。该作业是一个 PL/SQL 块(job_type = 'PLSQL_BLOCK'),它要运行的程序是一个名为 my_procedure 的存储过程(job_action = 'BEGIN my_procedure; END;')。该作业将从创建时开始运行(start_date = SYSTIMESTAMP),并将在每天晚上 10 点运行(repeat_interval = 'FREQ=DAILY; BYHOUR=22;')。最后,我们启用该作业(enabled = TRUE)并添加了一些注释(comments)。
2. 接下来,我们可以创建一个程序或脚本,例如 my_procedure 存储过程,该存储过程是在上面的作业中定义的。
```sql
CREATE OR REPLACE PROCEDURE my_procedure AS
BEGIN
-- 在此处添加要运行的代码
END;
/
```
在上面的代码中,我们创建了一个名为 my_procedure 的存储过程。该存储过程将在每天晚上 10 点由上面的作业调用。
3. 最后,我们可以使用 DBA_SCHEDULER_JOBS 视图来查看已创建的作业。
```sql
SELECT job_name, enabled, state
FROM dba_scheduler_jobs
WHERE owner = '<your_schema>'
ORDER BY job_name;
```
在上面的代码中,我们使用 SELECT 语句查找已创建的作业,并显示其名称、状态和是否启用。
以上是一个简单的例子,演示了如何使用 Oracle 的 DBMS_SCHEDULER 包来创建和管理定时任务。您可以根据自己的需求进行修改和扩展。
阅读全文