zoukankan      html  css  js  c++  java
  • 创建ORACLE JOB

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


    步骤如下: 
    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; 


    ----------------------------------------------------------------------------------
    在plSQL中我的做法是:

    declare   
    job number;      
    begin
    sys.dbms_job.submit(job,'prc_g_test;',sysdate,'sysdate+1/1440');
    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  / 

    ----------------------------------------------------------------------------------
    在plSQL中我的做法是:
    begin
    dbms_job.run(3017);
    end; 
    ----------------------------------------------------------------------------------

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

  • 相关阅读:
    JS实现动画的四条优化方法
    如果全球的沙子都对你发起DDoS攻击,如何破?
    阿里云实时计算的前世“功”今生“能”
    IPv6时代已来:双十一中的IPv6大规模应用实践
    支撑双十一的网络引擎:飞天洛神
    【阿里云总监课第四期】时髦的云原生应用怎么写?
    阿里云重磅发布RDS for SQL Server AlwaysOn集群版
    4K超清,2500万人在线,猫晚直播技术全解读
    猫晚流量再创记录,阿里云直播方案护航优酷2500万用户体验
    TableStore最佳实践:轻松实现轨迹管理与地理围栏
  • 原文地址:https://www.cnblogs.com/yunxianli/p/4111960.html
Copyright © 2011-2022 走看看