有时候,应用会报ORA-00904: "ADSAF": invalid identifier这样的错误,意思是找不到ADSAF这个字段,但是并没有说明是在查询那个表的时候发生的这个错误,这就为排错带来了一些困难,如果程序的代码很多,甚至是通过一些工具封装起来的,更增加了查错的难度。
这个时候我们就可以使用errorstack这个跟踪事件来诊断。示例如下:
1. 应用报 ORA-00904: "ADSAF": invalid identifier 这样的错误
2. 停止应用
3. 用sysdba登录,执行
SQL>alter system set events '904 trace name errorstack forever,level 3';
4. 启动应用
执行应用报错的步骤,使错误重现,等错误发生后,可以去udump目录下,应该会看到有一个最新的trc文件产生
5. 打开该文件,我们看到如下的内容
*** 2009-07-16 19:37:11.983
ksedmp: internal or fatal error
ORA-00904: "ADSAF": invalid identifier
Current SQL statement for this session:
select adsaf from test
通过上面的内容,我们就可以确定是对test的表查询,但是test表并没有adsaf这个字段,因此报错,这样我们就可以很快定位错误了
这种情况大多数发生在应用升级了,也许在测试环境对表增加了字段,但是生产环境却遗漏或者疏忽了,很容易发生这样的错误。
errorstack这个跟踪事件非常有用,还可以trace很多其他的错误,大家可以举一反三的使用。
阅读(403) | 评论(0) | 转发(0) |