Oracle 当应用redo(包括备用数据库)时生成ORA-600 [3020]

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]

 

适用于:

Oracle Database – Enterprise Edition – 版本10.2.0.1 及以上
本文信息适用于任何平台。
*** 09-Jun-2015检查相关性***

症状

当应用redo时,错误ORA-600[3020] 报告到alert.log

ORA-00600: internal error code, arguments: [3020], [11], [162321], [1], [9386], [910049], [480], []
ORA-10567: Redo is inconsistent with data block (file# 11, block# 162321)
ORA-10564: tablespace XXXXXXXXXXX
ORA-01110: data file 11: ‘<datafile_name>’
ORA-10561: block type ‘TRANSACTION MANAGED INDEX BLOCK’, data object# 70955

在跟踪文件中发现redo 块的dump  这显示 –>

REDO RECORD – Thread:1 RBA: 0x0024aa.000de2e1.01e0 LEN: 0x4ec0 VLD: 0x09
SCN: 0x0005.008adf34 SUBSCN: 3 06/07/2006 21:15:37
CHANGE #58 TYP:0 CLS: 1 AFN:11 DBA:0x02c27a11 OBJ:70955 SCN:0x0005.008adf34 SEQ: 1 OP:10.4    (a)
buffer tsn: 6 rdba: 0x02c27a11 (11/162321)
scn: 0x0005.008a20c5 seq: 0x03 flg: 0x00 tail: 0x20c50603    (b)
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data

我们想将redo应用到buffer,使用:SCN:0x0005.008adf34 SEQ: 1   (a)
这会将buffer 指向: SCN: 0x0005.008adf34
但我们实际上找到buffer ,使用:SCN: 0x0005.008a20c5 seq: 0x03        (b)    — 所以这个buffer (SCN)‘old’

原因

这是 Bug 4637668

ABSTRACT: ORA-600 [3020] SEEN ON STANDBY AFTER CHECKPOINT ERROR ON PRIMARY

查看重做日志显示尝试应用的buffer 是旧的 (就SCN而言)。

请注意:该bug适用于单实例数据库且不是IMURAC未在RAC 中被启用。

解决方案

Bug 4637668  10.2.0.3 及以上版本中被修正,以及在11g中。

选项
1)
通过错误:

ORA-10561: block type ‘TRANSACTION MANAGED INDEX BLOCK’, data object# <nnnnnn>

我们要找出那个对象是什么我们可以使用这个SQL

SQL> select owner,object_name,object_type from dba_objects where object_id=<nnnnn>

你可以drop并重建对象,使用OBJ#=<nnnnn> 。如果是备用数据库,在drop并重建对象后再次尝试创建备用数据库。

2) 变通方法:禁用IMU (set _in_memory_undo=FALSE)

请注意:该bug 适用于单实例数据库且不是IMURAC未在RAC 中被启用 。


该方法能避免问题,但不能修正它。

 注:_in_memory_undo 是对于10g的一个动态尝试,值为TRUE FALSE。它指定对于事务是否需要有in memory undo。将该值设为FALSE能禁用该功能。这会导致过多的重做生成。

_in_memory_undo 在以下情况下适用

compatibility >= 10.0
undo_management = AUTO
cluster_database = FALSE

—– 对于primary/standby 配置 —–
Primary db
a) 设置spfile中的参数
SQL> alter system set “_in_memory_undo”=false scope=spfile;

b) 关闭 / 重启主数据库使参数生效

c) 再次运行create standby – 这能保证在主数据库上的参数更改后使用数据文件和日志

3) 请检查My Oracle Support查看对你的平台 Patch 4637668 是否可用。

参考

BUG:4637668 – ORA-600 [3020] SEEN ON STANDBY AFTER CHECKPOINT ERROR ON PRIMARY


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *