执行时将“Oracle存储过程中的异常”重定向到日志文件

时间:2014-03-22 09:39:45

标签: sql oracle stored-procedures jobs job-scheduling

我有一个预定的工作,每天凌晨3:00:00运行存储过程。

我的程序中有异常阻止,如下所示。

EXCEPTION
 WHEN NOT_LOGGED_ON THEN
 dbms_output.put_line('Database is not connected/Database connection is lost');
 WHEN OTHERS THEN
 dbms_output.put_line('Error in execution');

我想在作业运行时每天将异常(如果有的话)记录到某种日志文件中。 这样,用户可以稍后检查日志文件,以了解该过程是否已成功运行。

任何人都可以告诉我有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

所以当你这样做,并且没有将异常带给用户时 - Oracle会创建一个带有异常的转储文件。

查看udump / bdump目录 - 您可能会发现大量报告这些错误的痕迹(对于作业 - 查找其中包含j0 ...的转储文件名称。)

更好的方法(而且我可以相信我说的,因为我不喜欢这种机制)是使用调度作业(dbms_scheduler)而不是http://docs.oracle.com/cd/E11882_01/server.112/e25494/scheduse.htm#ADMIN12501)它有一个内部机制放置您可以查询的表中的所有这些异常。

如果我上面写的内容 - 你仍然想要创建一个文件......

寻找UTL_FILE ....