`
anreddy
  • 浏览: 99049 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle Job不能正常运行的问题解决思路

阅读更多

JobsNotExecuting Automatically

Symptoms

Jobs arenolonger executing automatically.

Ifforced(execdbms_job.run(<enter here jobnumber>);),theseexecutefine.

Cause

Tryingthemost common reasons why jobs don't execute automatically and as scheduled:

 

1) Instance in RESTRICTED SESSIONS mode?

Check if the instance is in restricted sessions mode:

select instance_name,logins from v$instance;

If logins=RESTRICTED, then:

alter system disable restricted session;

^-- Checked!

 

 

2) JOB_QUEUE_PROCESSES=0

Make sure that job_queue_processes is > 0

show parameter job_queue_processes

^-- Checked!

 

 

3) _SYSTEM_TRIG_ENABLED=FALSE

Check if _system_enabled_trigger=false

col parameter format a25

col value format a15

select a.ksppinm parameter,b.ksppstvl value from x$ksppi a,x$ksppcv b

Where a.indx=b.indx and ksppinm=’_system_trig_enabled’;

^-- Checked!

 

 

4) Is the job BROKEN?

select job,broken from dba_jobs where job=<job_number>;

If broken, then check the alert log and trace files to diagnose the issue.

^-- Checked! The job is not broken.

 

 

5) Is the job COMMITted?

Make sure a commit is issued after submitting the job:

DECLARE X NUMBER;

BEGIN

SYS.DBMS_JOB.SUBMIT

(

job => X

,what => 'dbms_utility.analyze_schema

(''SCOTT'',''COMPUTE'',NULL,NULL,NULL);'

,next_date => to_date('08/06/200509:35:00','dd/mm/yyyy hh24:mi:ss')

,no_parse => FALSE

);

COMMIT;

END;

/

If the job executes fine if forced (i.e., exec dbms_jobs.run(<job_no>);), then likely a commit

is missing.

^-- Checked! The job is committed after submission.

 

 

6) UPTIME > 497 days

Check if the server (machine) has been up for more than 497 days:

For SUN , use 'uptime' OS command.

If uptime>497 and the jobs do not execute automatically, then you are hitting bug 3427424

(Jobs may stop running after 497 days uptime) which is fixed in 9206 and A102

^-- Checked! The server in this case has been up 126 days only

 

 

7) DBA_JOBS_RUNNING

Check dba_jobs_running to see if the job is still running:

select * from dba_jobs_running;

if the job is running,check the next two view v$access and v$locked_object to

find out what resources which the job is using are locking by other process.

^-- Checked! The job is not running.

 

 

8) LAST_DATE and NEXT_DATE

Check if the last_date and next_date for the job are proper:

select Job,Next_date,Last_date from dba_jobs where job=<job_number>;

^-- NEXT_DATE is porper, however LAST_DATE is null since the job never executes automatically.

 

 

9) NEXT_DATE and INTERVAL

Check if the Next_date is changing properly as per the interval set in dba_jobs:

select Job,Interval,Next_date,Last_date from dba_jobs where job=<job_number>;

^-- This is not possible since the job never gets executed automatically.

 

 

10) Toggle value for JOB_QUEUE_PROCESSES

Set job_queue_processes=0, wait some time and then and set it back to the original value:

alter system set job_queue_processes=0 ;

--<Wait for some time>

alter system set job_queue_processes=4 ;

Ref: Bug 2649244 (fixed by: 9015,9203,A000)

^-- Done but did not help

 

11) DBMS_IJOB(Non-documented):

Last ditch effort.

Either restart the database or try the following:

exec dbms_ijob.set_enabled(true);

Ref: Bug 3505718 (Closed, Not a Bug)

@Note 90989.1 (Using DBMS_IJOB) INTERNAL NOTE

 

 

Done but did not help

 

These are the most common causes for this behavior.

 

Solution

The solution ended up to be the server (machine) uptime.

Even though it was up for only 126 days, after the server was rebooted all jobs were able to execute automatically.

 

 To implement the solution, please execute the following steps:

 

1. Shutdown all applications, including databases.

2. Shutdown the server (machine)

3. Restart all applications, including databases.

4. Check that jobs are executing automatically.

 

原文出自:http://space.itpub.net/7813229/viewspace-610829

 

分享到:
评论

相关推荐

    Oracle Job的用法

    综上所述,Oracle Job是一个强大的工具,能帮助数据库管理员自动化执行各种任务。通过灵活的配置,可以实现定时执行、根据事件触发、异常处理等功能,极大地提高了数据库的管理和维护效率。理解并熟练掌握这些使用...

    oracle job使用详解

    - `job_queue_processes` 参数控制并发执行的 Job 数量,可以通过 `ALTER SYSTEM SET job_queue_processes=&lt;value&gt;` 来设置,但最大值不能超过 1000。 - `job_queue_interval` 参数定义了调度作业刷新的频率,单位...

    oracle job创建脚本

    Oracle Job是Oracle数据库中的一种调度工具,用于在指定的时间自动执行PL/SQL代码或存储过程。这在数据库管理和维护中非常有用,特别是对于定期运行的任务,如数据清理、备份、统计分析等。以下是对创建Oracle Job的...

    导出ORACLE - JOB

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

    ORACLE定时任务不能自动执行的检查修复步聚

    Oracle 定时任务不能自动执行的检查修复步聚 Oracle 定时任务是 Oracle ...这篇文章总结了 Oracle 定时任务不能自动执行的问题的检查和修复步聚,并解释了相关的知识点,希望能够帮助读者更好地理解和解决这个问题。

    Oracle Job定时任务

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

    ORACLE如何停止一个JOB

    在Oracle数据库管理中,有时我们需要停止正在运行的JOB,这可能是由于各种原因,如发现错误、优化性能或调整资源分配。本文将详细阐述如何在Oracle中查询并停止正在运行的JOB,包括关键步骤、涉及的表与视图以及具体...

    oracleJob创建脚本

    ### Oracle Job 创建脚本详解 #### 一、Oracle Job 概述 在Oracle数据库中,Job是一种用于调度定期任务的功能,常被用来自动化执行数据库管理中的各种任务,比如备份、清理临时表空间等。Job主要由`DBMS_JOB`包...

    oracle job 创建

    Oracle Job 是 Oracle 数据库中的一个特性,用于在预定义的时间间隔自动执行数据库任务,例如运行存储过程、PL/SQL 块或者 SQL 查询。...同时,定期监控 Job 的执行情况和日志,以便及时发现和解决问题。

    oracle job

    Oracle Job是Oracle的DBMS_SCHEDULER或之前版本中的DBMS_JOB包的一部分,它允许数据库管理员规划、监控和管理长时间运行的任务。 Oracle Job的创建通常涉及以下步骤: 1. **创建Job**:使用DBMS_SCHEDULER或DBMS_...

    oraclejob例子

    Oracle Job是Oracle数据库中的一个核心特性,用于在预定义的时间执行特定的数据库任务,比如运行SQL脚本、数据备份、维护或性能监控等。Oracle Job的全称是Database Scheduler Job,它通过Oracle Database Scheduler...

    ORACLE创建JOB脚本

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

    oracle JOB常见的执行时间定义

    oracle JOB常见的执行时间, 在初学者定义JOB时,对于执行时间往往不知道如何设置. 该文档列举了常见的定义方式.可以由此进行扩展.

    oracle job实例 测试通过

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

    Oracle案例详细分析:Job任务停止执行

    本文通过一次Oracle Job任务异常案例诊断,分析其原因及解决过程,从内部揭示Oracle Job任务调度及内部计时机制。以下是关于Oracle Job任务的知识点: 1. Oracle Job任务的概念:Oracle Job任务是指在数据库中执行...

    Oracle JOB 用法小结

    6. `Remove()`过程用于删除计划中的作业,但不能删除正在运行的作业。 7. `Run()`过程用于立即执行指定的作业。 8. `Submit()`过程是最常用的提交新作业的方法,它会返回一个作业号,并允许设置作业的基本属性,如...

    oracle job停止

    - 当遇到某个会话持续处于活跃状态导致CPU使用率高的情况时,直接`KILL SESSION`可能无法解决问题。此时需要真正地`KILL`线程。 #### 结论 本文详细介绍了在Oracle数据库中有效停止一个`JOB`的具体步骤,并讨论了...

    Oracle JOB 定时任务

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

    oracle中JOB总结

    Oracle中的JOB是一个重要的后台机制,用于自动化执行定时任务。这些任务可以是数据库维护、数据清理、备份或者其他任何基于时间的数据库操作。Oracle数据库利用SNP(Scheduler)进程来管理和执行这些JOB。 SNP...

    oracle的job定时

    Oracle的Job定时功能是Oracle数据库系统提供的一种自动化任务调度机制,允许用户设定特定的时间点或时间间隔执行数据库操作。在项目开发中,特别是在大数据管理和分析的场景下,定时任务经常被用于更新数据、生成...

Global site tag (gtag.js) - Google Analytics