日期:2014-05-16  浏览次数:20391 次

创建oracle job

oracle job简介?
主要的使用情景?
定时在后台执行相关操作:如每天晚上0点将一张表的数据保存到另一张表中,2:定时备份数据库等?

熟化说万事开头难,这里我只简单记述一个创建一个简单的job?
步骤如下:?
1、创建一张表g_test?
create table G_TEST?
(?
? ID???? NUMBER(12),?
? C_DATE DATE?
)?
2、创建一个sequence?
create sequence G_SEQ?
minvalue 1?
maxvalue 999999999999999999999999999?
start with 141?
increment by 1?
cache 20;?

3、创建一个存储过程?
create or replace procedure prc_g_test is?
begin?
? insert into g_test values(g_seq.nextval,sysdate);?
end prc_g_test;?

4、创建job,?
使用Submit()过程,工作被正常地计划好。?
这个过程有五个参数:job、what、next_date、interval与no_parse。?

PROCEDURE Submit (?job?????? OUT binary_ineger,?
?????????????????? What????? IN? varchar2,?
?????????????????? next_date IN? date,?
?????????????????? interval? IN? varchar2,?
?????????????????? no_parse? IN? booean:=FALSE)?

job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。?
what参数是将被执行的PL/SQL代码块。?
next_date参数指识何时将运行这个工作。?
interval参数何时这个工作将被重执行。?
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE?
指示此PL/SQL代码在它第一次执行时应进行语法分析,?
而FALSE指示本PL/SQL代码应立即进行语法分析。?

在command window窗口中执行下面脚本?
variable job1 number;?
begin?
??????? sys.dbms_job.submit(job => :job,?
??????????????????????????? what => 'prc_g_test;',?
???????????????????????????? next_date => to_date('22-10-2008 10:06:41', 'dd-mm-yyyy hh24:mi:ss'),?
???????????????????????????? interval => 'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次?
?????? commit;?
????? end;?
? /?
5、查看创建的job?
查看相关job信息?
1、相关视图?
dba_jobs?
all_jobs?
user_jobs?
dba_jobs_running 包含正在运行job相关信息。?
如:?
select * from dba_jobs?

6、运行JOB?
说明:Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:?
SQL> begin?
? 2? dbms_job.run(:job);?
? 3? end;?
? 4? /?


7、删除JOB?
SQL> begin?
? 2? dbms_job.remove(:job);--:job可以用dba_jobs.job的值代替如:1198?
? 3? end;?
? 4? /?


说明:在sqlplus命令行直接定义变量要variable!!!!

?