如何从trace文件中查找引起问题的sql
2008-09-28 12:57:04 来源:WEB开发网核心提示:从trace文件中提取sql语句包括两个步骤:首先要找到sql语句本身,然后找到sql语句可能用到的绑定变量的值,如何从trace文件中查找引起问题的sql,本文假设你已经找到了报错的trace文件, 第一步:查找sql语句跳到"Current cursor:"那行(在"*** Curso
从trace文件中提取sql语句包括两个步骤:
首先要找到sql语句本身,然后找到sql语句可能用到的绑定变量的值。
本文假设你已经找到了报错的trace文件。
第一步:查找sql语句
跳到"Current cursor:"那行(在"*** Cursor Dump ***"部分的开始处)。记下和当前cursor关联的数字(详情参考下文例子)。
如果当前的游标数字是0,表示当前没有sql语句。在这种情况下,最好是在trace文件前面的Call Stack Trace部分看看,这里告诉我们发生错误时正在做什么。一般情况下,oracle技术支持在处理问题的时候,会查看trace文件。
如果当前游标是个非0数值,在trace文件后面的部分查找以"Cursor n"开头的行,n表示你要找的游标号,从10.2及其以后的版本开始,查找"Cursor#n"开头的行。找到后,在下一行,你会看到"cursor name:",sql语句就在其后。
注意:
通常情况下,你通过查找"Current SQL statement for this session:"就能很快定位该sql,一般会在trace文件的前面部分。
如果sql语句没有用到绑定变量(例如. ":b1", ":b2", 等。),第二步可以不看了。
第二步:查找绑定变量的值
如果sql语句使用了绑定变量,根据游标中的sql语句,你就能定位特定的文本部分,和每个绑定变量的值关联。文本的每部分以"bind x:"开头,其中的x的范围是0 到 n-1,其中的n代表绑定变量个数。
在sql语句和绑定变量之间可能会有大量的内存dump,可以忽略这些信息。
每个绑定变量会有很多属性列表,下面是我们感兴趣的一部分列表:
a.) dty 指数据类型,常见的值为:
赞助商链接