Chinaunix首页 | 论坛 | 博客
  • 博客访问: 219046
  • 博文数量: 49
  • 博客积分: 1785
  • 博客等级: 上尉
  • 技术积分: 565
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-01 10:30
文章分类

全部博文(49)

文章存档

2013年(2)

2012年(7)

2011年(11)

2010年(6)

2009年(23)

我的朋友

分类: Oracle

2009-07-17 10:18:00


有时候,应用会报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) |
给主人留下些什么吧!~~