oracle dba_jobs设置任务
时间: 2023-07-26 10:07:58 浏览: 216
Oracle DBA_JOBS是用于创建和管理Oracle数据库作业的系统表。它允许您创建周期性或非周期性作业,并在指定时间自动运行这些作业。
以下是创建和管理Oracle DBA_JOBS的步骤:
1. 创建作业:使用DBMS_JOB包中的PROCEDURE来创建作业。例如,要创建一个名为"my_job"的作业,可以使用以下命令:
```sql
DECLARE
jobno NUMBER;
BEGIN
DBMS_JOB.SUBMIT(
job => jobno,
what => 'BEGIN my_procedure(); END;',
next_date => SYSDATE,
interval => 'SYSDATE + 1/24');
COMMIT;
END;
```
这个命令将在每个小时的第一分钟运行名为"my_procedure"的PL/SQL过程。
2. 查看作业:使用DBA_JOBS视图来查看所有作业的列表和详细信息。例如,要查看所有作业的列表,可以使用以下命令:
```sql
SELECT job, schema_user, what, next_date, interval, failures, broken
FROM dba_jobs;
```
这个命令将返回所有作业的列表以及它们的详细信息。
3. 修改作业:您可以使用DBMS_JOB包中的PROCEDURE来修改已经存在的作业。例如,要修改名为"my_job"的作业以使其在每个小时的第十五分钟运行,可以使用以下命令:
```sql
DECLARE
jobno NUMBER;
BEGIN
SELECT job INTO jobno FROM dba_jobs WHERE job = 'my_job';
DBMS_JOB.BROKEN(jobno, false);
DBMS_JOB.CHANGE(
job => jobno,
what => 'BEGIN my_procedure(); END;',
next_date => SYSDATE,
interval => 'SYSDATE + 1/24/4');
COMMIT;
END;
```
这个命令将修改名为"my_job"的作业以使其在每个小时的第十五分钟运行。
4. 删除作业:您可以使用DBMS_JOB包中的PROCEDURE来删除已经存在的作业。例如,要删除名为"my_job"的作业,可以使用以下命令:
```sql
DECLARE
jobno NUMBER;
BEGIN
SELECT job INTO jobno FROM dba_jobs WHERE job = 'my_job';
DBMS_JOB.REMOVE(jobno);
COMMIT;
END;
```
这个命令将删除名为"my_job"的作业。
阅读全文