Home  >  Article  >  Database  >  在oracle中使用scheduler的范例

在oracle中使用scheduler的范例

WBOY
WBOYOriginal
2016-06-07 15:07:041112browse

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 在oracle中使用scheduler的范例 Sql代码 -- 创建新表 create table T_TEST_JOB ( ID LONG, TEST_DATE TIMESTAMP(6) ) tablespace GBIAPS pctfree 10 initrans 1 maxtrans 255 storage ( initia

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

    在oracle中使用scheduler的范例

    Sql代码

    -- 创建新表

    create table T_TEST_JOB

    (

    ID        LONG,

    TEST_DATE TIMESTAMP(6)

    )

    tablespace GBIAPS

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 64

    minextents 1

    maxextents unlimited

    );

    -- 创建序列

    create sequence SEQ_TEST_JOB

    minvalue 1

    maxvalue 9999999999999999999999999999

    start with 1

    increment by 1

    cache 10;

    -- 创建存储过程

    create or replace procedure P_TEST_JOB as

    begin

    insert into t_test_job(id,test_date) values (SEQ_TEST_JOB.NEXTVAL,sysdate);

    end;

    /

    /*

    在使用create_job或者create_schedule前,请先检查 NLS_DATE_LANGUAGE, NLS_DATE_FORMAT,

    NLS_TIMESTAMP_FORMAT, NLS_TIMESTAMP_TZ_FORMAT 等参数的值, 通过alter session 命令来修改

    alter session set NLS_DATE_FORMAT='yyyy-MM-dd';

    alter session set NLS_TIMESTAMP_FORMAT='yyyy-MM-dd hh24:mi:ss';

    alter session set NLS_TIMESTAMP_TZ_FORMAT='yyyy-MM-dd HH:MI:SS.FF AM TZR';

    */

    select * from nls_session_parameters where parameter like '%_DATE_%' or parameter like '%_TIMESTAMP_%';

    -- 创建job

    -- FREQ 用来指定间隔的时间周期,可选参数有: YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY

    -- INTERVAL 用来指定间隔的频繁,可指定的值的范围从1-999

    -- 附加的参数有: BYMONTH,BYWEEKNO,BYYEARDAY,BYMONTHDAY,BYDAY,BYHOUR,BYMINUTE,BYSECOND

    /*

    每周的1,3,5运行job              FREQ=WEEKLY; BYDAY=MON,WED,FRI

    每年的3,6,9,12月的30号运行job   FREQ=YEARLY; BYMONTH=MAR,JUN,SEP,DEC; BYMONTHDAY=30

    每月1号凌晨1点执行一次

    Freq=Monthly;BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0;Interval=1

    */

    begin

    sys.dbms_scheduler.create_job(job_name            => 'JOB_TESTJOB',

    job_type            => 'STORED_PROCEDURE',

    job_action          => 'P_TEST_JOB',

    start_date          => sysdate,

    repeat_interval     => 'Freq=MINUTELY;BYSECOND=0;Interval=1',

    end_date            => to_date(null),

    job_class           => 'DEFAULT_JOB_CLASS',

    enabled             => true,

    auto_drop           => false,

    comments            => 'Baiyun Airport Web Site');

    end;

    /

    -- 启动job

    begin

    dbms_scheduler.enable('JOB_TESTJOB');

    end;

    /

    -- 运行job

    begin

    dbms_scheduler.run_job('JOB_TESTJOB',TRUE); -- true代表同步执行

    end;

    /

    -- 停止job

    begin

    dbms_scheduler.stop_job(job_name => 'JOB_TESTJOB',force => TRUE);

    end;

    /

    -- 删除job

    begin

    dbms_scheduler.drop_job(job_name => 'JOB_TESTJOB',force => TRUE);

    end;

    /

    -- 查询job

    select * from user_scheduler_jobs;

    select * from dba_scheduler_jobs;

    -- 查看数据

    select * from t_test_job;

    -- 删除数据

    delete from t_test_job;

在oracle中使用scheduler的范例

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn