使用oracle的系统跟踪功能调试java程序
今天在学习配置appfuse连接oracle数据库时,在执行设置程序ant db-load时程序报错:org.dbunit.dataset.NoSuchTableException,由于每次执行的会话不固定,为查找错误,使用了oracle的整个数据库系统跟踪功能,步骤如下:
1:使用system登陆数据库
2:设置全库跟踪,执行以下语句:
alter system set events '10046 trace name context forever,level 1';
其中的level 1是跟踪级别,其他级别如下:
level 1:跟踪SQL语句,等于sql_trace=true
level 4:包括变量的详细信息
level 8:包括等待事件
level 12:包括绑定变量与等待事件
注意:如果要设置级别 〉1,必须要先设置级别意,再设置高级别:
SQL> alter system set events '10046 trace name context forever,level 1';
System altered
SQL> alter system set events '10046 trace name context forever,level 12';
System altered
3:运行ant db-load
4:到数据库的udump,根据时间找到跟踪文件
5:直接察看跟踪文件,或使用tkprof(在dos下输入tkprof有说明)分析后再看:
tkprof 跟踪文件 输出文件
6:关闭跟踪,用如下语句:
alter system set events '10046 trace name context off';
关闭数据库后,同时关闭了全局跟踪
本次跟踪结果:
SELECT NULL AS table_cat,
o.owner AS table_schem,
o.object_name AS table_name,
o.object_type AS table_type,
NULL AS remarks
FROM all_objects o
WHERE o.owner LIKE 'MYTEST' ESCAPE '/'
AND o.object_name LIKE '%' ESCAPE '/'
AND o.object_type IN ('xxx', 'TABLE')
ORDER BY table_type, table_schem, table_name
需要以后再继续分析