7 x 24 在线支持!
ORA-00600: internal error code, arguments:[3020] 当应用redo(包括备用数据库)时生成ORA-600 [3020]
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
ORA-00600: internal error code, arguments:[3020]
适用于:
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适用于单实例数据库且不是IMU的RAC未在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 适用于单实例数据库且不是IMU的RAC未在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