oracle dbms_job 写法

dbms_job是Oracle数据库的一个重要组件,它是用于在数据库中定期执行任务的实用程序。我们可以通过使用dbms_job创建和管理定时任务,包括创建脚本、设置参数和定时插入数据。在创建过程中,我们需要注意设置job_queue_processes参数,以控制Oracle能够并发的job的数量。以下是使用dbms_job创建和管理定时任务的一些示例代码和注释:

  1. 创建job:

    BEGIN
    dbms_job.submit(job => :job_name, what => 'job_action', next_date => TO_DATE('01-JAN-2021 00:00:00', 'DD-MON-YYYY HH24:MI:SS'), interval => 'INTERVAL 1 DAY');
    END;

在上面的代码中,我们创建了一个名为:job_name的job,并将其提交到数据库中。该job会在明天凌晨0点开始执行,并以一天为周期进行。

  1. 查看job状态:

    SELECT job, last_date, last_next_date, status
    FROM dba_jobs
    WHERE job = :job_name;

在上面的代码中,我们从dba_jobs表中查询job的状态。其中,job是job的名称,last_date是上一次执行的时间,last_next_date是下一次执行的时间,status是job的状态。

  1. 取消job:

    BEGIN
    dbms_job.remove(job => :job_name);
    END;

在上面的代码中,我们使用dbms_job.remove方法来取消job。

  1. 更新job:

    BEGIN
    dbms_job.change(job => :job_name, what => 'new_action');
    END;

在上面的代码中,我们使用dbms_job.change方法来更新job的操作。其中,new_action是新的操作。

dbms_job在10g后较少使用,dbms_scheduler将成为重点。虽然dbms_job提供了许多过程和方法,但dbms_scheduler功能更强大。Oracle引入dbms_scheduler来管理定时任务,替代dbms_job。我们也可以通过使用dbms_scheduler来实现类似的功能,以下是一个使用dbms_scheduler创建和管理定时任务的示例代码:

  1. 创建job:

    BEGIN
    dbms_scheduler.create_job (job_name => :job_name, job_type => 'PLSQL_BLOCK',
    job_action => 'BEGIN
    -- your code here;
    END;', start_date => sysdate, repeat_interval => 'FREQ=DAILY; BYHOUR=16; BYMINUTE=00', enabled => true);
    END;

在上面的代码中,我们创建了一个名为:job_name的job,它会在每天下午4点执行一次。其中,job_type是任务类型,job_action是任务执行的PL/SQL块,start_date是任务的启动时间,repeat_interval是任务的周期,enabled是任务是否启动。

  1. 查看job状态:

    SELECT job, state
    FROM dba_scheduler_jobs
    WHERE job_name = :job_name;

在上面的代码中,我们从dba_scheduler_jobs表中查询job的状态。其中,job是job的名称,state是job的状态。

  1. 取消job:

    BEGIN
    dbms_scheduler.drop_job (job_name => :job_name);
    END;

在上面的代码中,我们使用dbms_scheduler.drop_job方法来取消job。

  1. 更新job:

    BEGIN
    dbms_scheduler.alter_job (job_name => :job_name, repeat_interval => 'FREQ=DAILY; BYHOUR=12; BYMINUTE=00',
    start_date => sysdate, enabled => true);
    END;

在上面的代码中,我们使用dbms_scheduler.alter_job方法来更新job的周期、启动时间和是否启动。其中,repeat_interval是新的周期,start_date是新的启动时间,enabled是是否启动。

相关推荐
阿里小阿希1 天前
Vue3 + Element Plus 项目中日期时间处理的最佳实践与数据库设计规范
数据库·设计规范
白鹭1 天前
MySQL源码部署(rhel7)
数据库·mysql
666和7771 天前
Struts2 工作总结
java·数据库
还听珊瑚海吗1 天前
SpringMVC(一)
数据库
星期天要睡觉1 天前
MySQL 综合练习
数据库·mysql
Y4090011 天前
数据库基础知识——聚合函数、分组查询
android·数据库
JosieBook1 天前
【数据库】MySQL 数据库创建存储过程及使用场景详解
数据库·mysql
处女座_三月1 天前
改 TDengine 数据库的时间写入限制
数据库·sql·mysql