首页 > 解决方案 > 如何在 Windows 中安排 cron 作业以特定时间间隔在 oracle 数据库中执行查询或存储过程?

问题描述

我有一个数据库,我想在一个表上执行查询,并将其输出推送到另一个表,这需要在特定的时间间隔内完成。我想在 windows 中使用 cron 来执行此操作。我正在使用 oracle 数据库。请让我知道需要为此创建步骤和文件。

标签: databaseoraclecron

解决方案


如果您在 Oracle 中安排作业,那么您几乎可以肯定要使用DBMS_SCHEDULER. 它比默认的操作系统调度程序更安全、更强大、更可靠。它也是可移植的,无论 Oracle 在什么平台上运行,相同的工作都可以工作。

如果有人要求您“在 Windows 上创建一个 cron 作业”,他们可能会在一般意义上使用“cron”这个词来表示某种调度系统。默认情况下,Windows 没有 cron。我敢肯定有办法安装它,但为什么要添加非标准、功能较弱的软件呢?

--Create initial objects:
create table test1(a number);
insert into test1 values(1);
create table test2(a number);

--Create the job:
begin
    dbms_scheduler.create_job(
        job_name => 'daily_table_copy',
        job_type => 'PLSQL_BLOCK',
        job_action =>
        q'[
            begin
                insert into test2
                select * from test1;

                commit;
            end;
        ]',
        repeat_interval => 'freq=daily;byhour=4;byminute=0;',
        start_date => systimestamp at time zone 'US/Eastern'
    );
end;
/

--Monitor the job:
select * from dba_scheduler_jobs where job_name = 'DAILY_TABLE_COPY';
select * from dba_scheduler_running_jobs where job_name = 'DAILY_TABLE_COPY';

推荐阅读