Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oracle plsql的逐步进度日志记录_Oracle_Logging_Plsql - Fatal编程技术网

oracle plsql的逐步进度日志记录

oracle plsql的逐步进度日志记录,oracle,logging,plsql,Oracle,Logging,Plsql,我有一个带有ID、严重性级别、消息、日志日期和时间的消息日志表 我使用下面的过程在PL/SQL脚本中将日志消息插入到日志表中 add_log(ID,'START','DEBUG','No CDR Detail to be processed', sysdate); 但如果出现故障,我会看到一些信息没有被记录下来。记录plsql进度的一步一步的最好方法是什么(如果需要,直到失败点) “如果出现故障,我看不到有消息被记录。记录plsql进度的逐步进度的最佳方法是什么(如果需要,直到故障点)

我有一个带有ID、严重性级别、消息、日志日期和时间的消息日志表

我使用下面的过程在PL/SQL脚本中将日志消息插入到日志表中

add_log(ID,'START','DEBUG','No CDR Detail to be processed', sysdate);    
但如果出现故障,我会看到一些信息没有被记录下来。记录plsql进度的一步一步的最好方法是什么(如果需要,直到失败点)

“如果出现故障,我看不到有消息被记录。记录plsql进度的逐步进度的最佳方法是什么(如果需要,直到故障点)。”

您的ADD_LOG()过程不包括
提交
——您可能依赖更广泛的事务来持久化日志记录。问题是,如果更广泛的事务失败,它将回滚并带走您的日志消息

这是自治事务pragma为数不多的合法用途之一。这将创建一个独立的事务(实际上是一个嵌套的会话),因此我们可以在不影响外部事务的情况下进行提交

create or replace procedure add_log (stp varchar2, code varchar2, log_message varchar2, logdat date)
is 
    PRAGMA AUTONOMOUS_TRANSACTION;
begin
    insert into message_log 
    (SEQ,PROC_STEP,
    CODE,
    LOG_MESSAGE,
    LOG_DATE
    )
    values 
    (log_SEQ.NEXTVAL,stp,code,log_message,logdat)
    ;
    COMMIT;  
end;

如果您将此更改为ADD_LOG(),则无论调用事务发生什么情况,您的所有消息都将被提交。

在PLSQL脚本中使用适当的
异常处理
,并利用它将消息插入日志。您是在
add\u log
过程中提交事务,还是在PL/SQL块中调用add\u log之后提交事务?
create or replace procedure add_log (stp varchar2, code varchar2, log_message varchar2, logdat date)
is 
    PRAGMA AUTONOMOUS_TRANSACTION;
begin
    insert into message_log 
    (SEQ,PROC_STEP,
    CODE,
    LOG_MESSAGE,
    LOG_DATE
    )
    values 
    (log_SEQ.NEXTVAL,stp,code,log_message,logdat)
    ;
    COMMIT;  
end;