Oracle中DBMS_JOB与dbms_scheduler定时任务详情

--定时job创建方式1(dbms_job),每天24点过执行 创建job
DBMS_JOB.SUBMIT( 
   job       OUT    BINARY_INTEGER,    					--任务ID
   what      IN     VARCHAR2, 							--这个任务要执行什么,可以是存储过程,别忘了分号 'ProcedureName;'
   NEXT_DATE IN     DATE DEFAULT SYSDATE, 				--下次执行时间
   interval  IN     VARCHAR2 DEFAULT 'NULL', 			--执行频率,默认'null',只执行一次
   no_parse  IN     BOOLEAN DEFAULT FALSE,   			--创建时是否不需要解析与其关联的sql,如存储过程,默认false,是会解析的
   instance  IN     BINARY_INTEGER DEFAULT ANY_INSTANCE,--可以执行该任务的实例,默认any
   force     IN     BOOLEAN DEFAULT FALSE);  			--暂时就按强制执行理解
'''eg:'''
declare
  i Integer;
  begin 
    dbms_job.submit(i,'user_status;',sysdate,'trunc(sysdate+1)+1/(24*60*60)'); --'trunc(sysdate,''mi'')+10/(24*60)'  每十分钟执行一次,名字一定要带分号
  end;
--DBMS_JOB 相关视图 
select * from dba_jobs/user_jobs;	--查看job___________________
select * from dba_jobs_running; 	--查看正在运行的job
--DBMS_JOB 相关视图
begin
	dbms_job.remove(jobId) 					--删除job定时任务,可以从user_jobs视图中查看job的详细情况
	dbms_job.run(jobid) 					--运行定时任务
	dbms_job.next_date(jobid,下次执行时间); --更新job下次执行时间
	dbms_job.broken(jobid,true) 			--终止定时任务  :true停止job ,false启动job broken(中止的)  
	dbms_job.interval(jobid,'interval') 	--修改定时任务的执行时间
end
   
----------------------------创建job2(dbms_scheduler)--------------------
begin
  dbms_scheduler.create_job(job_name            => 'SYD.REPAIRE_ROOM',
                                job_type            => 'STORED_PROCEDURE',
                                job_action          => 'repaire_room_land',
                                start_date          => to_date('28-10-2019 12:39:37', 'dd-mm-yyyy hh24:mi:ss'),
                                repeat_interval     => 'Freq=Minutely;Interval=10',
                                end_date            => to_date(null),
                                job_class           => 'DEFAULT_JOB_CLASS',
                                enabled             => true,
                                auto_drop           => true,
                                comments            => '');
end;
/
--dbms_scheduler 相关操作
begin
	dbms_scheduler.run('jobName',true); 			--运行job
	dbms_scheduler.stop_job('jobName',force)  --停止job,force默认为false,oracle建议false停止失败情况下,使用true,且使用true需要有manage scheduler权限
	dbms_scheduler.stop_job(job_name=>'',force=>true);
	dbms_scheduler.drop_job('jobName') 		--删除job
	dbms_scheduler.enable('jobName') 			--打开job
	dbms_scheduler.disable('jobName',force) 	--禁用job,force参数用于dependencies,如果TRUE,即使其他对象依赖于它,操作也能成功
end;
--dbms_scheduler 相关视图
select * from user_scheduler_jobs 			--查看job信息
select * from User_Scheduler_Job_Log job 		--job日志
select * from user_scheduler_job_run_details  --job运行日志
select * from user_scheduler_running_jobs 	--正在运行的job
 
--job无法运行作业,调度程序不可用
show parameter job_queue_processes; --value = 0
---允许并行的JOB数量,为0的话就是不允许JOB运行。
alter system set job_queue_processes=10;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值