手机网站建设的影响,深圳市无限空间工业设计有限公司,中小企业网站,免费建网站平台哪个好oracle中job和dbms_job比较
一、概述
Oralce中的任务有2种#xff1a;Job和Dbms_job#xff0c;两者的区别有#xff1a; ①、Job是通过调用dbms_scheduler.create_job包创建的#xff0c;Dbms_job则是通过调用dbms_job.submit包创建的。 ②、两种任务的查询视图都分为db…oracle中job和dbms_job比较
一、概述
Oralce中的任务有2种Job和Dbms_job两者的区别有 ①、Job是通过调用dbms_scheduler.create_job包创建的Dbms_job则是通过调用dbms_job.submit包创建的。 ②、两种任务的查询视图都分为dba和普通用户的Job对应的查询视图是dba_scheduler_jobs和user_scheduler_jobsdbms_jobs对应的查询视图为dba_jobs和user_jobs。 ③、在plsql developer中job位于jobs菜单、dbms_job位于dbms_jobs菜单。 在oracle10g以后就推荐采用dbms_scheduler包来取代dbms_job来创建定时任务。
二、使用例子
1、dbms_job的使用
1、语法
BEGIN
DBMS_JOB.SUBMIT(JOB OUT BINARY_INTERGER,--输出变量是此任务在任务队列中的编号也可以自定义一般不传WHAT IN VARCHAR2,--执行的任务的名称及其输入参数NEXT_DATE IN DATE DEFAULT SYSDATE,--任务执行的时间INTERVAL IN VARCHAR2 DEFAULT NULL,--任务执行的时间间隔NO_PARSE IN BOOLEAN DEFAULT FALSE,--用于指定是否需要解析与作业相关的过程INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE,--用于指定哪个例程可以运行作业FORCE IN BOOLEAN DEFAULT FALSE--用于指定是否强制运行与作业相关的例程
);
END
例子:
CREATE OR REPLACE PROCEDURE PROC_ADD_TEST AS
BEGININSERT INTO A8 VALUES (TO_CHAR(SYSDATE, YYYY-MM-DD HH:MI));/*向测试表插入数据*/COMMIT;
END;
---------------------------------------------------------------------
declarejob number;
BEGINDBMS_JOB.SUBMIT( JOB job, /*自动生成JOB_ID*/ WHAT proc_add_test;, /*需要执行的存储过程名称或SQL语句*/ NEXT_DATE sysdate3/(24*60), /*初次执行时间-下一个3分钟*/ INTERVAL trunc(sysdate,mi)1/(24*60) /*每隔1分钟执行一次*/); commit;
end;2、删除job: dbms_job.remove(jobno); – jobno任务号 3、修改要执行的操作: job:dbms_job.what(jobno, what); --指定任务号以及存储过程 4、修改下次执行时间 dbms_job.next_date(jobno, next_date); --指定任务号的时间 5、修改间隔时间 dbms_job.interval(jobno, interval); --指定任务号的间隔时间 6、改变与作业相关的所有信息,包括作业操作,作业运行日期以及运行时间间隔等.
dbms_job.change(job in binary_integer,what in varchar2,next_date in date,interval in varchar2,instance in binary_integer default null,force in boolean default false
);
--例子
dbms_job.change(2,null,null,sysdate2);7、启动job: dbms_job.run(jobno); --指定任务号启动 8、停止job: dbms.broken(jobno, broken, nextdate); –broken为boolean值 N代表启动Y代表没启动STOP
2、job的使用
使用dbms_scheduler创建job需要具有create job权限对定时任务一些操作需要具有MANAGE SCHEDULER权限如dbms_scheduler.stop_job(‘my_job_test’,true)。
--1.创建表
create table bak_job_test(date_time date,mark varchar2(200));
--2.创建一个存储过程用于创建表
create or replace procedure my_test authid current_user isv_count number : 0;v_mess varchar2(200) : ;beginselect count(1) into v_count from user_tables t where t.TABLE_NAME BAK_JOB_TABLES;if v_count 0 thenexecute immediate drop table bak_job_tables purge;end if;execute immediate create table bak_job_tables as select * from user_tables where 12;insert into bak_job_test(date_time,mark) values(sysdate,success);
exception
when others then
v_mess : substr(SQLERRM,0,200);
insert into bak_job_test(date_time,mark) values(sysdate,v_mess);end;
--3.创建存储过程
BEGINdbms_scheduler.create_job(job_name my_job_test,job_type STORED_PROCEDURE,job_action my_test,start_date sysdate,repeat_interval sysdate 1/1440,enabled TRUE,comments test);
END;