我该如何实现数据库cron作业记录器?

时间:2010-06-28 03:54:44

标签: oracle architecture plsql

我使用PHP和Oracle,crontab在预定时间执行PHP脚本。我当前的日志/审计解决方案涉及简单的日志文件。我想将我的cron执行日志保存到数据库中。

现在我正在尝试设计进程,以便在cron作业启动时,我在CronExecution表中创建一条记录。然后,每次我想为该cron记录一些内容时,我都会在CronEvent表中放置一条记录,该表将有CronExecution表的外键。

我计划使用PRAGMA AUTONOMOUS pl / sql过程记录所有事件。通过这个过程,我将能够以一致的方式记录其他pl / sql过程中的事件以及我的PHP代码。

为了使其更强大,我的计划是在数据库日志调用失败的情况下将错误记录到文件中。

有没有人写过类似的东西?根据您的经验,您有什么建议?

2 个答案:

答案 0 :(得分:1)

是的,我已经好几次了。

CronExecution表是个好主意。但是,我不知道你真的需要创建CronEvent表。相反,只需给自己一个“状态”列并更新该列。

你会发现让故障转移更容易。当你构建大量这些CronExecutions时,你可能对CronEvents不太感兴趣,并且对执行的完整状态更感兴趣。

在存储过程中包装所有更新调用。你肯定有正确的。

CronExecution中加入“时间表”非常方便。很容易有很多cron工作而且无法连接点“这需要多长时间?”“这应该什么时候运行” 。在完成工作时加入“下一次预定运行”将使您的生活更轻松。

答案 1 :(得分:0)

您需要阅读有关DBMS_SCHEDULER的文档。 实现(不是什么?)是一项工作,但它允许您从数据库中控制计划和一次性作业。这包括操作系统级别的工作。