oracle 定时任务(scheduler job)

本文介绍了如何在Oracle中管理定时任务(Scheduler Job),包括创建、查询、删除Job,结合创建Program,设置参数,以及调整执行时间和状态。还展示了查询Job运行状态、执行时间以及相关信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

怎样从数据库中查询job的属性

select * fromuser_scheduler_jobs;

或者调用DBMS_SCHEDULER包中的GET_ATTRIBUTE

 

--============================================================

--dbms_scheduler的使用

--============================================================

--sql

CREATETABLE wty_test_scheduler

(

 r_id   VARCHAR2(10),

 r_date TIMESTAMP(6)

);

 

--创建job

BEGIN

 dbms_scheduler.create_job(JOB_NAME=>'job_create_wty_test',

                            job_type=> 'PLSQL_BLOCK',

                           JOB_ACTION=>'BEGIN

                                          INSERT INTO wty_test_scheduler VALUES ("JOB",SYSDATE);

                                          COMMIT;

                                         END;',

                            ENABLED=>TRUE,

                           start_date=>SYSTIMESTAMP,

                           repeat_interval=>'SYSTIMESTAMP + 1/1440',

                           comments=>'job_create_wty_test'        

                           );

END;

 

SELECT t.r_id,CAST(t.r_date ASDATE) FROM wty_test_schedulert;

 

EXECdbms_scheduler.drop_job('job_create_wty_test');

 

SELECT * FROMuser_scheduler_jobs;

 

--create job结合create_program

CREATEORREPLACEPROCEDURE sp_wty_test_scheduler

(in_id VARCHAR2)

IS

 BEGIN

   INSERTINTO wty_test_scheduler VALUES (in_id,SYSDATE);

   COMMIT

 END;

 

--创建program

BEGIN

 dbms_scheduler.create_program(program_name=>'program_wty_test_scheduler',

                                program_action=>'sp_wty_test_scheduler',

                               program_type=>'stored_procedure',

                               number_of_arguments=>1,

                               comments=>'wty_test_scheduler_program',

                                enabled => FALSE

                               );

END;

 

 

EXECdbms_scheduler.drop_program('program_wty_test_scheduler');

SELECT * FROMuser_scheduler_programs;

 

--设置progam参数

BEGIN

 dbms_scheduler.define_program_argument(program_name=>'program_wty_test_scheduler',

                                        argument_position=>1,

                                        argument_type=>'varchar2',

                                        default_value => 'program'             

                                        );

END;

 

--执行program (命令窗口)

EXECdbms_scheduler.enable('program_wty_test_scheduler');

 

SELECT t.r_id,CAST(t.r_date ASDATE) FROM wty_test_schedulert;

 

--dbms_sheduler运行信息

SELECT

      t.job_name,

      t.ENABLED,

      cast(t.last_start_date ASDATE),

      t.SCHEDULE_NAME

 FROM user_scheduler_jobs t

WHEREt.job_name='JOB_CREATE_WTY_TEST';

 

--dbms_scheduler运行成功与否信息

SELECT

      t.JOB_NAME,

      t.STATUS,

      CAST(t.ACTUAL_START_DATE ASDATE) start_date,

      CAST(t.LOG_DATE ASDATE) log_date

 FROM user_scheduler_job_run_details t

WHEREt.JOB_NAME='JOB_CREATE_WTY_TEST'

  ANDTRUNC(CAST(t.LOG_DATE ASDATE))=DATE'2016-11-16'

ORDERBY4DESC;

 

 

--查询执行时间情况

SELECT

      t1.WINDOW_NAME,

      t1.REPEAT_INTERVAL,

      t1.duration

 FROM dba_scheduler_windows t1,

      dba_scheduler_wingroup_memberst2

WHEREt1.WINDOW_NAME=t2.WINDOW_NAME

  AND t2.WINDOW_GROUP_NAME='MAINTENANCE_WINDOW_GROUP';

 

--修改执行时间

BEGIN

  dbms_scheduler.set_attribute('WEEKEND_WINDOW','REOEAT_INTERVAL','freq=daily;byday=SAT;byhour=0;bysecond=0');

  dbms_scheduler.set_attribute('WEEKEND_WINDOW','DURATION','+000 04:00:00');

END;

 

--job JOB_ROSANU变成可运行状态

BEGIN

  dbms_scheduler.enable('program_wty_test_scheduler');

END;

 

--job运行时长

SELECT

      t.job_name,

      t.STATE,

      t.ENABLED,

      CAST(t.last_start_date ASDATE) 最后运行时间,

      CAST(t.next_run_date ASDATE) 下次运行时间

 FROM user_scheduler_jobs t

WHERE t.job_name='JOB_ROSANU';

 

注意:查看定时任务执行时间根据REPEAT_INTERVAL来看如下:

FREQ=DAILY; BYHOUR=23;BYMINUTE=30;BYSECOND=0

执行时间为每天23:00:00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值