我们正在使用在 DBMS_JOB 之上运行的作业调度系统。它使用主作业来创建一次性作业。我们为所有客户端部署相同的作业集,但可以指定哪些作业应仅在某些客户端上运行。
我们偶尔会遇到由作业挂起运行的进程的问题。造成这种情况的主要原因是 UTL_TCP 在得到预期响应时没有超时。我希望能够杀死这些工作,以便它们可以再次运行。
我正在考虑创建一项新工作,以杀死任何运行时间超过特定时间的一次性工作。
我们被 Oracle 10g 困住了一段时间,所以我仅限于它可以做什么。
有一篇文章似乎涵盖了大部分内容
http://it.toolbox.com/blogs/database-solutions/killing-the-oracle-dbms_job-6498
我有一种感觉,这不会涵盖所有可能发生的情况,包括:
- 我们可以作为几个不同的用户运行作业,并且用户只能中断/删除他们创建的作业。我相信我可以使用 DBMS_IJOB 来解决这个问题,但我需要让 DBA 让我执行它。
- 我们有 Oracle RAC 系统。我了解 10g 将 ALTER SYSTEM KILL SESSION 限制为在当前实例上终止会话。我可以安排所有作业在同一个实例上运行,但我还没有尝试过。
还有什么我应该考虑的吗?Stack Overflow 需要一个明确的答案。