--定时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;
Oracle中DBMS_JOB与dbms_scheduler定时任务详情
最新推荐文章于 2023-11-03 17:40:19 发布