如果写了一个大而复杂的PL/SQL应用程序,想要跟踪对子程序的调用,比如看到子程序的执行顺序,则可以使用DBMS_TRACE
包,该包的使用过程与DBMS_PROFILER
类似,一个主要区别在于DBMS_TRACE
可以设定需要跟踪的事件:调用、异常、SQL甚至每一个PL/SQL代码的可运行。
DBMS_TRACE
默认已经被安装在Oracle系统中,在包中主要的函数有如下两个:
- set_plsql_trace
:开启跟踪统计数据的收集。
- clear_plsql_trace
:停止跟踪统计数据的收集。
配置与使用DBMS_TRACE
在使用DBMS_TRACE
之前,需要先配置一下DBMS_TRACE
所使用的数据表,并使得所有的用户都能够向这些表中写入数据。
使用DBA身份登录,执行tracetab.sqll
语句创建DBMS_TRACE
所需要写入的表:
@?rdbms/admin/tracetab.sql
这个脚本创建了两个表和一个序列 :
- plsql_trace_runs
表:用来记录每一次的跟踪信息。
- plsql_trace_events
表:用来记录所有跟踪的详细数据。
- plsql_trace_runnumber
序列:用于生成唯一运行号的序列。
在成功创建表之后,需要创建同义词并赋权:
CREATE OR REPLACE PUBLIC SYNONYM plslq_trace_runs FOR sys.plslq_trace_runs;