`

oracle创建job

 
阅读更多
创建

 variable job_feeid_create  NUMBER;
 
begin 
    sys.dbms_job.submit(:job_feeid_create,
'wlk_check_fee;',sysdate,'TRUNC(SYSDATE+1)');
 
commit;
 
end;
在命令控制台中这样就可以建产一个作业了。sysdate表示当前作业将来执行的时间,sysdate+1表示调用频率。

描述                    INTERVAL参数值 
每天午夜12点            
'TRUNC(SYSDATE + 1)' 
每天早上8点30分         
'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)' 
每星期二中午12点         
'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24' 
每个月第一天的午夜12点    
'TRUNC(LAST_DAY(SYSDATE ) + 1)' 
每个季度最后一天的晚上11点 
'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24' 
每星期六和日早上6点10分    
'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)' 

1、 每分钟执行

Interval => TRUNC(sysdate,’mi’) + 1 / (24*60)

2、 每天定时执行

例如:每天的凌晨2点执行

Interval => TRUNC(sysdate) + 1 +2 / (24)

3、 每周定时执行

例如:每周一凌晨2点执行

Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天

4、 每月定时执行

例如:每月1日凌晨2点执行

Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24

5、 每季度定时执行

例如每季度的第一天凌晨2点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24

6、 每半年定时执行

例如:每年71日和11日凌晨2

Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24

7、 每年定时执行

例如:每年11日凌晨2点执行

Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24

每天午夜12点 
'TRUNC(SYSDATE + 1)' 
每天早上8点30分
'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)' 

每星期二中午12点 
'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24' 

每个月第一天的午夜12点 
'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每个季度最后一天的晚上11点 
'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24' 
每星期六和日早上6点10分
'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), 
NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)' 

运行

 
begin
  dbms_job.run(:job_feeid_create);
  
end;

查询作业记录
select   *   from   user_jobs

具体讲解:
       1.确保Oracle的工作模式允许启动任务队列管理器 
             Oracle定时执行“Job Queue”的后台程序是SNP进程,而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以    DBA的身份去执行如下命令: 
              svrmgrl>; alter system enable restricted session; 
             或sql>; alter system disenable restricted session; 
             利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。

      2.确保Oracle的系统已经配置了任务队列管理器的启动参数 
            SNP的启动参数位于Oracle的初始化文件中,该文件放在$ORACLE_HOME/dbs路径下,如果Oracle的SID是myora8的话,则初始化文件就是   initmyora8.ora,在文件中对SNP启动参数的描述部分如下: 
            job_queue_process=n 
            job_queue_interval=N 
            第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。 
            第二行定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状 态,睡眠一段时间后,由系统的总控负责将其唤醒。 
            如果该文件中没有上面两行,请按照如上配置添加。配置完成后,需要重新启动数据库,使其生效。注意:如果任务要求执行的间隔很短的 话,N的配置也要相应地小一点。 
       3.将任务加入到数据库的任务队列中 
              用Oracle的dbms_job包中的存储过程,将任务加入到任务队列中: 
dbms_job.submit( job out binary_integer, 
what       
in   archar2, 
next_date     
in   date, 
interval     
in   varchar2
no_parse     
in   boolean) 

其中: 
         ●job:输出变量,是此任务在任务队列中的编号; 
         ●what:执行的任务的名称及其输入参数; 
         ●next_date:任务执行的时间; 
         ●interval:任务执行的时间间隔。 
         下面详细讨论一下dbms_job.submit中的参数interval。严格地讲,interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null 时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。  
         将任务加入到任务队列之前,要确定执行任务的数据库用户,若用户是scott, 则需要确保该用户拥有执行包dbms_job的权限;若没有,需要以   DBA的身份将权利授予scott用户: 
         svrmgrl>; grant execute on dbms_job to scott; 

     4.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段 

            例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行如下命令: 
sql>; variable n number
sql
>begin 
dbms_job.submit(:n‘my_job;’,sysdate, 
‘sysdate+
1/360’); 
commit
end
/ 
          系统提示执行成功。
Sql>print :n; 
         系统打印此任务的编号,例如结果为300。 
         如上,我们创建了一个每隔4分钟执行一次的任务号为300的任务。可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况: 
 
sql>select job,next_date,next_sec,failures,broken from user_jobs; 
         执行结果如下:
         job next_date next_sec failures broken 
         300 2000/10/10 11:45:15 0 N 

         这表示任务号为300的任务,下一次将在2000/10/10 11:45:15执行,此任务的执行失败记录为0次。注意:当执行job出现错误时,Oracle将其记录在日志里,失败次数每次自动加1。当执行失败次数达到16时,Oracle就将该job标志为broken。此后,Oracle不再继续执行它,直到用户调用过程dbms_job.broken,重新设置为not broken,或强制调用dbms_job.run来重新执行它。 
         除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来操作任务。例如:dbms_job.change 、 dbms_job.what、dbms_job.interval可以用来修改提交的任务。要想删除该任务,只需运行dbms_job.remove(n)即可,其中n为任务号。 
分享到:
评论

相关推荐

    oracle 创建job实例

    Oracle 创建 Job 实例 Oracle 创建 Job 实例是指在 Oracle 数据库中创建一个计划任务,用于在特定的时间点执行特定的操作。以下是创建 Job 实例的详细过程和相关知识点: 一、创建 Job 实例 要创建一个 Job 实例...

    Oracle 创建 job 实例

    ### Oracle 创建 Job 实例 在 Oracle 数据库管理与开发中,创建定时任务是十分常见的需求之一。例如,可能需要每分钟将一个表中的数据更新到另一个表中,这样的任务可以通过创建 Oracle 的 Job 来实现。 #### 一、...

    ORACLE创建JOB脚本

    本文将深入探讨Oracle中的JOB创建,以及如何编写和使用相应的脚本来设定定时任务。 首先,我们需要理解Oracle中的DBMS_JOB包,这是Oracle提供的一组过程,用于创建、修改和管理JOB。DBMS_JOB包包含以下主要过程: ...

    Oracle创建job

    oracle Job创建、管理、监控,Job运行情况分析,如果创建、删除、停止、修改Job.

    Oracle Job定时任务

    Oracle Job 定时任务 Oracle Job 定时任务是 Oracle 数据库中的一种定时执行任务的机制,它允许用户在指定的时间点或每天的某个时间点自行执行任务。 一、查询系统中的 Job 可以通过以下视图查询系统中的 Job: *...

    oracle创建job实例[参考].pdf

    Oracle数据库中的作业(Job)是实现定时任务的重要机制,它允许管理员或开发人员安排特定的PL/SQL块在预设的时间点或周期性地执行。在Oracle中创建和管理作业主要涉及以下几个步骤和知识点: 1. **创建作业**: ...

    ORACLE 创建JOB脚本及时间间隔解说

    在Oracle数据库中,`DBMS_JOB`包是一个用于创建后台作业(JOB)的PL/SQL程序,它允许用户安排在特定时间执行的SQL或PL/SQL过程。在本篇文章中,我们将深入探讨如何创建Oracle JOB脚本以及如何设置不同的时间间隔。 ...

    Oracle JOB 定时任务

    Oracle JOB 定时任务 定时执行存储过程

    oracleJob创建脚本

    除了基本的创建Job外,Oracle还提供了一些高级特性来增强Job的功能性: 1. **条件执行**:可以通过在`what`参数中嵌入条件判断语句来实现某些复杂的逻辑。 2. **错误处理**:利用异常处理机制来捕捉并处理Job执行...

    导出ORACLE - JOB

    从oracle库中导出自定义的job脚本。

    oracle job创建脚本

    这个变量用于存储新创建Job的ID,这是后续操作中识别和管理Job的关键。 3. **DBMS_JOB.SUBMIT过程**: `sys.dbms_job.submit`是创建新Job的主要函数,参数如下: - `job`:新Job的编号,通过变量`:job`传递。 - ...

    oracle_job的创建更改及删除

    "Oracle Job 创建、更改和删除" Oracle Job 是一种自动执行任务的机制,允许数据库管理员创建、更改和删除作业以实现自动执行任务。本文将对 Oracle Job 的创建、更改和删除进行详细的介绍。 创建作业 创建作业...

    oracle的job定时

    2. **创建Job**:接下来,我们需要创建一个Job,将存储过程与特定的时间点或时间间隔关联。可以使用`DBMS_SCHEDULER.CREATE_JOB`或`DBMS_JOB.BEGIN_JOB`函数来实现。例如,如果希望每天凌晨1点执行这个任务,我们...

    oracle job 创建

    对于初学者来说,理解如何创建、运行和管理 Oracle Job 是十分重要的。 1. **Job 的创建**: 创建一个 Oracle Job 需要使用 `DBMS_JOB` 包中的 `SUBMIT` 子程序。在提供的示例中,我们看到以下步骤: - 首先,...

    创建oracle job

    在Oracle数据库管理中,创建Job是一项重要的功能,可以帮助用户自动化执行一些周期性的任务,比如定期备份数据、更新统计信息等。本文将详细介绍如何在Oracle环境中创建Job,并通过具体的示例来解释各个步骤。 ####...

    Oracle Job的用法

    一、创建Oracle Job Oracle Job的创建通常通过DBMS_SCHEDULER包中的程序来完成。首先,你需要创建一个job,指定其执行的PL/SQL块,如下面的例子所示: ```sql BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'my...

    oracle job

    1. **创建Job**:使用DBMS_SCHEDULER或DBMS_JOB包中的函数创建一个新的作业。例如,可以使用DBMS_SCHEDULER.CREATE_JOB来定义作业的名称、执行的PL/SQL代码、执行频率和开始时间。 ```sql BEGIN DBMS_SCHEDULER....

    linux下oracle创建实例总结

    ### Linux 下 Oracle 10.2.0 创建实例详尽指南 #### 一、环境配置与准备 在开始创建 Oracle 数据库实例之前,确保已经安装了 Oracle 10.2.0 版本,并完成了相应的环境变量配置。下面将详细介绍环境配置的步骤。 *...

    plsql创建存储过程并创建job定时任务执行-详细笔记文档总结

    plsql创建存储过程并创建job定时任务执行详细笔记文档总结 在 Oracle 中,plsql 是一种强大的编程语言,可以用来创建存储过程和定时任务执行。在本文中,我们将详细介绍如何使用 plsql 创建存储过程并创建 job 定时...

Global site tag (gtag.js) - Google Analytics