Oracle下的Job重启之旅(oracle中job重启)
Oracle下的Job重启之旅
随着企业信息化的不断深入,Oracle数据库在许多企业中被广泛应用,作为关系型数据库管理系统,它可以处理大量数据且提供多种管理工具,其中一个重要的功能是Job。Job是Oracle中可以定时执行的程序,负责完成一系列预定工作,如备份,清理日志等。但是这些Job也会出现异常或者因为某些原因停止。今天我们就来探讨如何在Oracle下优雅且快速地重启Job。
一、查看Job状态
在了解如何重启Job之前,必须先知道Job的当前状态。使用以下SQL语句查询当前Job的状态:
“`sql
SELECT job_name, status FROM user_scheduler_jobs;
这个查询语句会列出系统中所有的Job的名称和状态。其中,status可以有四种状态:
1. SCHEDULED2. RUNNING
3. COMPLETED4. BROKEN
其中BROKEN状态表示Job当前不可用,可能是由于参数错误,权限问题或者脚本问题。而在其他状态下的Job也需要我们检查是否需要重启。
二、重启Job
重启Job有不同的方式,可以手动启动,也可以使用DBMS_SCHEDULER包来完成自动重启。我们来介绍这两种方法。
1. 手动重启
手动重启需要系统管理员手动调用DBMS_SCHEDULER包下的START_JOB_PROCEDURE过程,具体命令如下:
```sqlBEGIN
DBMS_SCHEDULER.START_JOB ( job_name => 'job_name',
force => true);END;
其中,job_name是需要重启的Job名称,force指定是否强制重启,一般情况下设置为true。这个过程会使Job立即启动。
2. 自动重启
在实际应用环境中,我们可能需要自动重启Job,这时可以使用DBMS_SCHEDULER包下的SET_JOB_ARGUMENT_VALUE过程设置“on_flure”参数,将其设置为对应的自动重启参数值即可。例如:
“`sql
BEGIN
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => ‘job_name’,
argument_name => ‘on_flure’,
argument_value => ‘RESTART’);
END;
这个过程会在Job出现BROKEN状态时自动尝试重启Job。
三、篡改Job
在某些特殊情况下,可能需要修改Job的一些参数,例如修改Job执行时间,这时可以使用DBMS_SCHEDULER包下的SET_ATTRIBUTE过程来修改。例如要将Job的执行时间从每天早上6点改为每天下午2点,可以使用以下命令:
```sqlBEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'job_name',
attribute => 'start_time', value => to_timestamp_tz('2019-9-1 14:00:00.0 -0500', 'yyyy-mm-dd hh24:mi:ss.ff TZR'));
END;
这个命令将Job的start_time属性改为2019年9月1日下午2点。
总结
在Oracle中,Job是一个很重要的功能,如果Job出现异常或者停止,都会影响到企业的日常工作,因此我们需要及时地处理这些问题。本文介绍了两种重启Job的方法,并且提供了篡改Job参数的示例代码。当然,在实际操作中,还需要结合实际情况,根据具体的问题选择不同的方案。