zoukankan      html  css  js  c++  java
  • 如何找出错误ora07445发生时系统执行的语句

    在trace file中查找错误出现时的语句主要分两个步骤:首先找到错误发生时的执行语句,然后需要找到语句中绑定变量的值。
    Step 1:Find the SQL
    在跟踪文件中查找字符串“Current cursor”(一般在cursor dump段的起始部分),使用current cursor后面的数字定位出错时系统的执行语句。
    如果找到的这个数字为0说明没有dump出有效的执行语句。
    如果找到的这个数字n不为0,接着往下查找,定位到字符串“cursor n”其中n为刚找到的数字。从10.2版本后,你可能需要定位到字符串“cursor #n”,这里cursor name后面跟随的语句就是我们需要的sql。
    另外我们也可以通过查找字符串“Current SQL statement for this session”来定位我们需要查找的sql语句,通常情况下,这个语句出现在trace file文件的开始部分。
    如果定位到的sql语句中引用了变量(:a1…)那么我们需要通过下面步骤2找出绑定的变量值。
    Step 2:find values of the bind variables
    如果定位得到的sql语句中出现了绑定变量,那么我们将会在cursor name后面发现”bind *”之类的字符串,其中×为0到n-1的值,n为sql语句中绑定变量的个数。
    对每个绑定变量都有一系列的属性说明列表,下面简单描述列表后面的属性。
    Dty : databype 1 varchar2 or nvarchar2
    2 number
    8 long
    11 rowid
    12 date
    23 raw
    24 long raw
    96 char
    112 clob or nclob
    113 blob
    114 bfile
    Mxl: the maximum lenth
    Scl: the scale(for number columns)
    Pre: the precision(for number columns)
    Value: 绑定变量的值

    通过解析上面的内容,你可以得到绑定变量的类型及其数据值,也有一些情况(非常少),你在bind *后面找不到values字节,那么我们就不能通过这种方式得到绑定变量的值。
  • 相关阅读:
    浅谈JavaScript中forEach与each
    Angular.js中使用$watch监听模型变化
    整理:Javascript获取数组中的最大值和最小值的方法汇总
    自定义指令的参数
    ng-disabled 不起作用的解决办法
    理解Angular中的$apply()以及$digest()
    $q -- AngularJS中的服务(理解)
    正则表达式30分钟入门教程(转)
    angular.extend用法实例
    使用angular.bootstrap() 完成模块的手动加载
  • 原文地址:https://www.cnblogs.com/einyboy/p/2817634.html
Copyright © 2011-2022 走看看