DBMS_TRACE 包可能主要是开发调试的时候用的比较多,主要是将trace信息记录到系统表里.
开始使用前需要使用sys用户执行$ORACLE_HOME/rdbms/admin/tracetab.sql语句,该脚本创建plsql_trace_runs和plsql_trace_events两个表和一个sequence,详细可以参考脚本内容.
通常使用的可能是dbms_trace.set_plsql_trace(trace_level);和dbms_trace.clear_plsql_trace两个procedure.
trace_level可以参考dbms_trace package中的定义:
trace_all_calls constant integer := 1; -- Trace calls/returns
trace_enabled_calls constant integer := 2;
trace_all_exceptions constant integer := 4; -- trace exceptions
trace_enabled_exceptions constant integer := 8; -- (and handlers)
trace_all_sql constant integer := 32; -- trace SQL statements
trace_enabled_sql constant integer := 64; -- at PL/SQL level (does
-- not invoke SQL trace)
trace_all_lines constant integer := 128; -- trace each line
trace_enabled_lines constant integer := 256;
即1就代表trace_all_calls。
下面参考网上找了一个例子写了个简单的存储过程:
create or replace procedure cur_trace_test as
in_rand number :=0;
lv_lang varchar2(30);
begin
select userenv('LANGUAGE') into lv_lang from dual;
dbms_trace.set_plsql_trace(1);
for i in 1 .. 2 LOOP
in_rand:=1+i;
if (MOD(in_rand,100) = 0) then
dbms_output.put_line(to_char(in_rand));
end if;
END LOOP;
dbms_trace.clear_plsql_trace;
end cur_trace_test;
执行后可以根据sys.plsql_trace_runs和sys.plsql_trace_events表中的信息跟踪存储过程的执行.
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23850820/viewspace-1034419/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23850820/viewspace-1034419/