oracle数据库中,dba_jobs里有job为broken,如何拉起这个job呢
时间: 2024-09-14 13:07:25 浏览: 65
ORACLE如何停止一个JOB
5星 · 资源好评率100%
在Oracle数据库中,如果发现DBA_JOBS视图中的某个作业(job)的状态为"broken",这通常意味着该作业在执行过程中遇到了错误,并且没有被自动重新调度。要重新启动这样的作业,需要采取几个步骤:
1. 查看作业的详细信息:首先,需要查看broken状态的作业的详细信息,了解其执行的错误。可以使用以下SQL查询来获取作业的状态、错误信息等:
```sql
SELECT * FROM DBA_JOBS WHERE JOB = <broken_job_number>;
```
将`<broken_job_number>`替换为相应的作业编号。
2. 分析错误原因:查看作业的错误信息,确定作业失败的原因。错误信息可能会指出是由于程序错误、权限问题、资源限制或其他问题导致作业失败。
3. 修复问题:根据错误信息进行相应的修复。例如,如果是因为存储过程中的逻辑错误,则需要修正逻辑;如果是由于权限不足,则需要赋予相应的权限。
4. 重新调度作业:修复问题后,可以使用DBMS_JOB包来重新调度作业。例如:
```sql
BEGIN
DBMS_JOB.REMOVE(<broken_job_number>);
END;
/
BEGIN
DBMS_JOB.SUBMIT(
job => :jobno,
what => 'your_procedure;', -- 这里替换为你的存储过程或PL/SQL块
next_date => SYSDATE, -- 可以设置为期望的下一次执行时间
interval => 'SYSDATE + 1' -- 可以设置为作业的调度间隔
);
COMMIT;
END;
/
```
请确保将`your_procedure;`替换为实际需要执行的程序,同时设置正确的`next_date`和`interval`。
5. 验证作业状态:提交作业后,可以再次查询DBA_JOBS视图以确认作业的状态已经变为"submitted"或"ready",表示作业已经成功重新调度。
阅读全文