在 Oracle 中是否可以跟踪导致错误的 SQL 语句?

evg*_*345 1 oracle debugging

我们在生产中使用了 Oracle 11g。应用系统仍在积极开发中。获取导致任何错误的 SQL 语句将非常方便。

Oracle 是否提供标准函数来跟踪和记录这些语句和附加(调试)信息?

Col*_*art 7

虽然我不确定这是否是最简单的方法,但您可以使用after servererror on database触发器将所有错误记录到表中。

从将所有数据库错误记录到Ferdous Nadvi的表

drop trigger log_errors_trig;
drop table   log_errors_tab;

create table log_errors_tab (
 error     varchar2(30),
 timestamp date,
 username  varchar2(30),
        osuser    varchar2(30),
        machine   varchar2(64),
 process   varchar2(8),
 program   varchar2(48));

create or replace trigger log_errors_trig 
 after servererror on database
declare
 var_user     varchar2(30);
 var_osuser   varchar2(30);
 var_machine  varchar2(64);
 var_process  varchar2(8);
 var_program  varchar2(48);
begin
 select username, osuser, machine, process, program
 into   var_user, var_osuser, var_machine, var_process, var_program
 from   sys.v_$session
 where  audsid = userenv('sessionid');

 insert into log_errors_tab
   values(dbms_standard.server_error(1),sysdate,var_user,
          var_osuser,var_machine,var_process,var_program);
end;
/
Run Code Online (Sandbox Code Playgroud)

另请参阅PSOUG 上的Oracle 系统事件触发器系统事件触发器的官方文档