`
周凡杨
  • 浏览: 235247 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle之Job应用

阅读更多

最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。

 

一:查看相关job信息

   1、相关视图 

dba_jobs 

all_jobs 

user_jobs 

dba_jobs_running 包含正在运行job相关信息。

 

     select * from dba_jobs ;

 

     --dba_jobs_running 包含正在运行job相关信息

select * from dba_jobs_running;

 

 

2、运行JOB 

说明:Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数: 

SQL> begin 

2  dbms_job.run(:job); 

3  end; 

4  / 

 

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

在plSQL中我的做法是:

begin

dbms_job.run(3017);

end; 

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

 

3、删除JOB 

SQL> begin 

2  dbms_job.remove(:job);--:job可以用dba_jobs.job的值代替如:1198 

3  end; 

4  / 

 

二:参数:job_queue_process

 

pl/sql的命令窗口执行:

SQL> show parameter job_queue_process;

 

NAME                                 TYPE        VALUE

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

job_queue_processes                  integer     10

 

通过show parameter job_queue_process 来查看oracle中 job_queue_process的值。 当job_queue_process的值为0时表示全部停止oracle的job。

可以通过语句: ALTER SYSTEM SET job_queue_processes = 10;  来调整启动oracle的job。

 

视图dba_jobs字段的含义:

 

   JOB   任务的唯一标示号

         Identifier of job. Neither import/export nor repeated executions change it.

 

   LOG_USER     提交任务的用户

                USER who was logged in when the job was submitted

   PRIV_USER    赋予任务权限的用户

                USER whose default privileges apply to this job

   SCHEMA_USER  对任务作语法分析的用户模式

                select * from bar means select * from schema_user.bar

   LAST_DATE    最后一次成功运行任务的时间

                Date that this job last successfully executed

   LAST_SEC     如HH24:MM:SS格式的last_date日期的小时,分钟和秒

                Same as LAST_DATE. This is when the last successful execution started.

   THIS_DATE    正在运行任务的开始时间,如果没有运行任务则为null

                Date that this job started executing (usually null if not executing)

   THIS_SEC     如HH24:MM:SS格式的this_date日期的小时,分钟和秒

                Same as THIS_DATE. This is when the last successful execution started.

   NEXT_DATE    下一次定时运行任务的时间

                Date that this job will next be executed

 

   NEXT_SEC     如HH24:MM:SS格式的next_date日期的小时,分钟和秒

                Same as NEXT_DATE. The job becomes due for execution at this time.

   TOTAL_TIME    该任务运行所需要的总时间,单位为秒

                 Total wallclock time spent by the system on this job,in seconds

 

   BROKEN       标志参数,Y标示任务中断,以后不会运行

                If Y,no attempt is being made to run this job. See dbms_jobq.broken(job).

   INTERVAL      用于计算下一运行时间的表达式

                 A date function

 

   FAILURES     任务运行连续没有成功的次数

                How many times has this job started and failed since its last success?

   WHAT         执行任务的PL/SQL块

                Body of the anonymous PL/SQL block that this job executes

   NLS_ENV      任务运行的NLS会话设置

                alter session parameters describing the NLS environment of the job

   MISC_ENV     任务运行的其他一些会话参数

                a versioned raw maintained by the kernel

 

   INSTANCE

      Instance number restricted to run the job

 

 

 

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

描述 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)

 

 

Interval => sysdate+1/1440

 

2:每天定时执行

 

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

 

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

 

3:每周定时执行

 

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

 

Interval => TRUNC(next_day(sysdate,'星期一'))+1/24

 

4:每月定时执行

 

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

 

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

 

5:每季度定时执行

 

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

 

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

 

6:每半年定时执行

 

例如:每年7月1日和1月1日凌晨1点

 

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

 

7:每年定时执行

 

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

 

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

 

 

---例子(第一个可运行的例子):

 

1. 首先:创建一个package

 

create or replace package xinyangacitiviiy

is

procedure  proc_getxinyangRecommData;

end xinyangacitiviiy;

 

2. 其次:创建一个package body

 

create or replace package body xinyangacitiviiy is

procedure  proc_getxinyangRecommData as

BEGIN

       insert into ec.zhou_yhhd_jinfen values('1','1',to_char(sysdate,'yyyy-mm-dd HH:MM:SS'));

       COMMIT;

end;

end xinyangacitiviiy;

 

3.最后,定义job并实施运行策略

 

variable jobxinyang number;

begin

  sys.dbms_job.submit(job => :jobxinyang,

                      what => 'xinyangacitiviiy.proc_getxinyangRecommData;',

                      next_date => sysdate,

                      interval => 'TRUNC(sysdate,''mi'') + 1/ (24*60)');

  commit;

end;

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    ORACLE如何停止一个JOB

    本文将详细阐述如何在Oracle中查询并停止正在运行的JOB,包括关键步骤、涉及的表与视图以及具体的命令应用。 #### 1. 相关表与视图 - **`dba_jobs`**: 包含数据库中所有JOB的信息,包括计划、状态等。 - **`all_...

    oracle的job定时

    Oracle的Job定时功能是Oracle数据库系统提供的一种自动化任务调度...不过,要注意的是,Oracle的定时功能虽然强大,但在实际应用中,还需考虑任务间的依赖关系、资源管理以及错误处理策略,确保系统的稳定性和高效性。

    ORACLE创建JOB脚本

    在Oracle数据库系统中,"JOB"是用于调度和自动化任务执行的一种功能,它允许你在预定义的时间点运行存储过程、PL/SQL块或其他数据库操作。本文将深入探讨Oracle中的JOB创建,以及如何编写和使用相应的脚本来设定定时...

    oracle中JOB总结

    在实际应用中,对JOB进行充分的测试和监控,以确保它们能够在预期的时间内正确运行,并在遇到问题时能够按预期方式进行重试或报警。此外,对于复杂的定时任务,可能还需要结合其他工具或脚本,以实现更复杂的逻辑...

    oracle job使用详解

    Oracle Job 提供了一种灵活的方式来自动化数据库维护任务,确保在特定时间执行关键操作,对于大型企业级应用和数据库管理系统尤其重要。了解并熟练使用 Job 功能,有助于提高数据库的效率和可靠性。

    oracleJob创建脚本

    ### Oracle Job 创建脚本详解 #### 一、Oracle Job 概述 在Oracle数据库中,Job是一种用于调度定期任务的功能,常被用来自动化执行数据库...在实际应用中,还需要结合具体情况灵活运用,不断优化和完善Job的设置。

    xxl-job oracle 适配版本

    首先,Oracle数据库是一种广泛使用的、功能强大的关系型数据库管理系统,尤其在大型企业级应用中,其稳定性和性能表现卓越。XXL-JOB选择适配Oracle,意味着它可以更好地服务于那些使用Oracle作为数据存储的企业。 ...

    oracle job

    oracle job,帮助初学者学习job应用 包含创建、删除、修改job 等。 oracle job,帮助初学者学习job应用 包含创建、删除、修改job 等。

    oraclejob例子

    Oracle Job广泛应用于数据库维护,如定期备份、数据清理、性能调整、报表生成等。它为企业提供了一种自动化处理数据库任务的高效方式,减轻了DBA的工作负担,并确保任务的及时性和准确性。 通过理解并熟练掌握...

    oracle job实例 测试通过

    从给定的Oracle Job实例测试通过的描述与代码片段中,我们可以提炼出多个关于Oracle数据库管理、编程与作业调度的关键知识点。以下是对这些知识点的详细解释: ### 1. 创建序列(Sequence) 在Oracle数据库中,...

    Oracle作业JOB探讨

    在Oracle数据库管理中,作业(JOB)是自动化执行任务的重要机制之一。本文将重点探讨Oracle作业中`next_date`字段的更新方式及其背后的工作原理,并通过实际案例深入理解如何设置作业的执行时间。 #### 一、Oracle...

    oracle job 创建

    在实际应用中,Oracle Jobs 可以用于自动化数据清理、报表生成、数据备份等定时任务。理解如何正确地创建和管理 Job 对于维护数据库的正常运行至关重要。记得在编写和提交 PL/SQL 代码时仔细检查语法,避免因复制...

    oracle job创建脚本

    Oracle Job是Oracle数据库中的一种调度工具,用于在指定的时间自动执行PL/SQL代码或存储过程。...在实际应用中,你需要根据业务需求定制Job的`what`、`next_date`和`interval`参数,确保Job能够按预期工作。

    创建oracle job

    ### 创建Oracle Job详解 在Oracle数据库管理中,创建Job是一项重要的功能,可以帮助用户自动化执行一些周期性的...在实际应用中,可以根据具体需求调整Job、Program和Schedule的设置,实现更加复杂的自动化任务管理。

    Oracle利用job和dblink高级数据库同步技术

    本文将深入探讨如何利用Oracle的Job和DBLink功能进行高级数据库同步技术,以确保数据的一致性和实时性。 首先,让我们了解Oracle Job。Job是Oracle的一个调度工具,它允许用户在特定时间或按固定频率执行数据库操作...

    Oracle中job的实例

    ### Oracle中的Job定时任务详解与应用 #### 一、Oracle Job概述 在Oracle数据库中,Job是一种非常重要的机制,用于实现数据库的定时任务自动化。它主要用于执行预定义的PL/SQL代码块,如存储过程或者匿名块等。Job...

    ORACLE_JOB_.rar_oracle

    在Oracle数据库系统中,"JOB" 是一个非常重要的概念,它允许用户在预定义的时间执行一系列的数据库操作,如数据加载、备份、清理任务等。本文将深入探讨Oracle中的Jobs,包括它们的工作原理、创建方法、调度以及管理...

    oracle job的用法

    Oracle Job 是 Oracle 数据库中的一个特性,用于在预定义的时间执行数据库任务,如备份、清理、数据处理等。Job 的使用通常涉及以下几个步骤: 1. **创建测试表和过程**: 在示例中,首先创建了一个名为 `A` 的...

    xxl-job-admin-2.4.1-SNAPSHOT之oracle版

    总的来说,"xxl-job-admin-2.4.1-SNAPSHOT之oracle版"是一个适用于Oracle数据库环境的XXL-JOB调度中心版本,提供了强大的任务调度能力。在使用前,需要确保对Oracle数据库的管理和Java Web应用的部署有一定了解,并...

    xxl-job-admin-oracle.zip

    由于其轻量级和易扩展的特性,XXL-JOB在中小型项目以及大型企业的微服务架构中都有广泛的应用。它不仅可以用来处理定时任务,还可以作为事件驱动和工作流的一部分,实现更复杂的业务逻辑。总的来说,XXL-JOB是一个...

Global site tag (gtag.js) - Google Analytics