ITPub博客

首页 > IT职业 > IT生活 > DBMS_TRACE包学习

DBMS_TRACE包学习

原创 IT生活 作者:charsi 时间:2010-06-13 15:43:40 0 删除 编辑

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博客 ” ,链接:https://blog.itpub.net/23850820/viewspace-1034419/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 表分析初体验
请登录后发表评论 登录
全部评论

注册时间:2010-05-04

  • 博文量
    96
  • 访问量
    406715