创建OracleJob

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!!!!

-------------------------------------------------------------------------------------------------------

--调用其他存储过程
create or replace procedure p_syncrms is
 
Begin     
  --局站
    p_syncrms_site;
    --机房
    p_syncrms_room;
    --设备
    p_syncrms_device;
    --机架
    p_syncrms_rack;
    --机框
    p_syncrms_subne;
    --槽道
    p_syncrms_slot;
    --插盘
    p_syncrms_circuitpack;
    --物理端口
    p_syncrms_managedport;
    --段
    p_syncrms_transsegment;
    --槽路信息
    p_syncrms_trans_slot_pass;
    --通道
    p_syncrms_tntrail;
    --逻辑端口
    p_syncrms_nm_logicport;
    p_syncrms_nm_port_logic;
    --时隙
    p_syncrms_nm_trans_slot_time;
    --时隙和设备关系
    p_syncrms_port_2_slot_time;
    --节点
    p_syncrms_node;
Exception
    When Others Then
    null;
end p_syncrms;
1.创建JOB
      variable job1 number;
      begin
    dbms_job.submit(:job1,'p_syncrms;',sysdate,'sysdate+20/1440');  --每天1440分钟,即20分运行一次
   end;
   /
2.运行JOB
   begin
    dbms_job.run(:job1);
   end;
   /

3.删除JOB
 begin
   dbms_job.remove(:job1);
   end;
  /
  
4.查询job
   select * from user_jobs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值