Oracle作业消失了(oracle 作业不存在)

从上周开始,我就一直在为自己的Oracle作业感到头疼。一开始,我认为自己只是遇到了一些小问题,但随着时间的推移,问题越来越严重。一些Oracle作业不仅无法执行,甚至连在系统中都看不到了。

我一度认为这是因为我的电脑出了问题,但细心观察后,我发现所有的问题都源于Oracle数据库中的一些作业。在开始研究这些问题之前,我需要先了解Oracle作业的定义和特点。

Oracle作业,或称为Oracle任务,是Oracle数据库中的一个重要概念。它表示一组相关的操作,可以在一定的时间间隔内自动执行。如果使用Oracle作业,那么我们就无需手动执行那些需要定时执行的任务。另外,Oracle作业还非常灵活,可以通过设置各种条件来控制它们的执行。这些条件包括时间、日期、频率等等。

我接下来的步骤是,通过Oracle SQL Developer来检查是否存在像样的任务。使用以下脚本:

SELECT job_name, enabled, state

FROM dba_scheduler_jobs;

结果显示有几个任务被禁用,同时,最近开始有机器上下线。我检查了所有的情况,没有出现问题,我必须重新启用任务。使用以下脚本:

BEGIN

dbms_scheduler.enable(‘JOB_NAME’);

END;

然后我再次运行第一个脚本,发现任务已成功启动,但对于那些消失的任务,我无法找到它们。

在研究这些问题之后,我发现这是因为Oracle数据库中的一些缺陷所致。 这些缺陷导致Oracle作业可能会丢失,这使得任务无法执行。 好在我找到了一些解决方案。

最初的一个方法是,尝试利用Oracle提供的DBMS_SCHEDULER.CHN_RULES_RETENTION操作通过指定保留时间来防止作业删除。 使用以下代码来执行该操作:

BEGIN

dbms_scheduler.set_scheduler_attribute(‘CHN_RULES_RETENTION’, ‘-1’);

END;

这将指定Oracle数据库来保留所有作业,并防止它们被删除。

还有一种方法是检查数据库中的缺陷。为此,您必须打开Oracle数据库实例。使用以下命令来打开实例:

SQLPLUS / NOLOG

SQL> CONNECT / AS SYSDBA

SQL> STARTUP

使用以下代码来检查缺陷:

SELECT * FROM DBA_SCHEDULER_JOB_RUN_DETLS WHERE STATUS = ‘FLED’;

在此查询中,如果您找到任何失败的细节,则可以通过手动重新执行这些任务来修复它们。 这可以使用以下代码完成:

BEGIN

dbms_scheduler.run_job(”, FALSE);

END;

随着我对Oracle作业的更深入研究,我更加了解数据库的规则,也知道了如何解决这些问题。 对于其他人可能会遇到的类似问题,我建议使用上述方法进行排查,并及时修复防止数据丢失。


数据运维技术 » Oracle作业消失了(oracle 作业不存在)