IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    ORA-00600 [2662] , 怎么计算 adjust SCN level

    admin发表于 2016-02-17 06:54:35
    love 0

    ORA-00600 [2662] , 怎么计算 adjust SCN 

    通常我们对于ORA-600 [2662]错误的解决是通过10015 ADJUST_SCN事件来增进current SCN以达到比数据文件中最大的SCN还要大的目的,这样才可能启动数据库。

    如下例子中报错信息如下:
    ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []

    这个报错参数的含义在metalink中如此描述的:
    Arg [a] Current SCN WRAP
    Arg [b] Current SCN BASE
    Arg [c] dependent SCN WRAP
    为了存储更大的SCN值,当SCN BASE到足够大并开始重置的时候,SCN WRAP将加1。
    Arg [d] dependent SCN BASE
    Arg [e] Where present this is the DBA where the dependent SCN came from.
    也就是Arg [d] 的值是从哪个block中找到的,通常是一个data block address。

    通过这几个参数根据一定的规则可以计算出我们需要的level。计算规则如下:
    1. Arg [c] *4得出一个数值,假设为V_Wrap
    2. 如果Arg [d]=0,则V_Wrap值为需要的level
    Arg [d] < 1073741824,V_Wrap+1为需要的level
    Arg [d] < 2147483648,V_Wrap+2为需要的level
    Arg [d] < 3221225472,V_Wrap+3为需要的level

    仍旧看eygle的案例。
    Arg [c] *4 = 0 * 4 = 0
    Arg [d] = 898092653 < 1073741824
    所以level = 0+1 = 1
    因此:

    1. alter session set events ‘10015 trace name adjust_scn level 1‘;

    看另外一个例子的报错信息,我们再来计算一次。
    ORA-00600: internal error code, arguments: [2662], [0], [2179133], [8656], [70114056], [33855201], [], []

    Arg [c] *4 = 8656 * 4 = 34624
    Arg [d] = 70114056 < 1073741824
    所以level = 34624 + 1 = 34625
    因此在这个例子中我们应该执行

    1. alter session set events ‘IMMEDIATE trace name ADJUST_SCN level 34625‘;

    使用隐含参数_ALLOW_RESETLOGS_CORRUPTION后resetlogs打开数据库后,我们说很多时候你会遇到ORA-00600 2662号错误,这个错误的含义是:

    A data block SCN is ahead of the current SCN.
    The ORA-600 [2662] occurs when an SCN is compared to the dependent SCN
    stored in a UGA variable.
    If the SCN is less than the dependent SCN then we signal the ORA-600 [2662]
    internal error.

    在测试中,很容易模拟这个错误:

    Thu Oct 20 10:38:27 2005
    SMON: enabling cache recovery
    Thu Oct 20 10:38:27 2005
    Errors in file /opt/oracle/admin/conner/udump/conner_ora_31607.trc:
    ORA-00600: internal error code, arguments: [2662], [0], [897694446], [0], [897695488], [8388697], [], []
    Thu Oct 20 10:38:28 2005
    Errors in file /opt/oracle/admin/conner/udump/conner_ora_31607.trc:
    ORA-00600: internal error code, arguments: [2662], [0], [897694446], [0], [897695488], [8388697], [], []

    如果SCN相差不多,可以通过多次重起数据库解决。

    也可以通过内部事件:
    alter session set events ‘IMMEDIATE trace name ADJUST_SCN level 1′;
    来解决



沪ICP备19023445号-2号
友情链接