Oracle:跟踪SQL语句

时间:2009-07-23 00:37:10

标签: asp.net oracle debugging trace

我正在维护一个基于网络的家庭式帮助台解决方案,在某些情况下我们正在经历数据库字段的错误更改。所涉及的代码非常坦率地说是混乱,混合了不同的数据库访问方法(最糟糕也是最危险的一种是通过连接构建sql字符串)。对整个解决方案中有问题的字段进行全文搜索没有帮助(该字段仅出现在选择和单个合法插入中),所以我甚至找不到有问题的代码。

您是否知道在Asp.Net或Oracle(8)本身中快速启用sql跟踪? (是否可以通过OracleConnection对象或类似的东西拦截sql命令?这样就可以获得堆栈跟踪并找出错误的代码。)

我已经完成了一些谷歌搜索,我发现了这个:ALTER SYSTEM SET sql_trace = true SCOPE=MEMORY;但我想知道哪种解决问题的方法更好(并且可能构建一个简单的sql日志记录机制而无需重写申请)。

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

启用跟踪是可行的方法,但如果您无法正常工作,请尝试查看是否可以在SYS.v $ sql的sql_text列中找到对违规列的引用。假设该语句最近已运行(并且执行该操作的语句不会太长,以至于您要查找的列已被截断 - Oracle 8未存储全文),您应该能够找到它在那里。 SQL无法显示的唯一另一种情况是,是否通过触发器或存储过程发生了更改,在这种情况下,您应该能够在ALL_SOURCES表的TEXT列中找到该列。

相关问题