诗檀软件专业数据库修复团队
ORA-00600[4000]是Oracle 内核事务undo模块的一个内部报错信息,一般来说ORA-00600[4000]错误会附带一个argument , 该arg[a]表示Undo segment number USN。
早期版本中当使用表空间传输且对传输后的表有DML时可能因为BUG而引起该错误,可以参考文档1371820.8。
到9i以上如果遇到该ORA-00600[4000]错误,则一般是 存储/OS等断电或者故障导致Oracle的undo segment的损坏, 常见于没有正常关闭实例 之后打开数据的场景中。
以下是ORA-00600[4000]的BUG 列表:
| NB |
Bug |
Fixed |
Description |
|
16761566 |
11.2.0.4, 12.1.0.2, 12.2.0.0 |
Instance fails to start with ORA-600 [4000] [usn#] |
|
13910190 |
11.2.0.3.BP15, 11.2.0.4, 12.1.0.1 |
ORA-600 [4000] from plugged in tablespace in Exadata |
|
14741727 |
11.2.0.2.9, 11.2.0.2.BP19, 11.2.0.3.BP12, 11.2.0.3.BP13, 12.1.0.1 |
Fixes for bug 12326708 and 14624146 can cause problems - backout fix |
| + |
10425010 |
11.2.0.3, 12.1.0.1 |
Stale data blocks may be returned by Exadata FlashCache |
| * |
9145541 |
11.1.0.7.4, 11.2.0.1.2, 11.2.0.2, 12.1.0.1 |
OERI[25027]/OERI[4097]/OERI[4000]/ORA-1555 in plugged datafile after CREATE CONTROLFILE in 11g |
|
12353983 |
|
ORA-600 [4000] with XA in RAC |
|
7687856 |
11.2.0.1 |
ORA-600 [4000] from DML on transported ASSM tablespace |
|
2917441 |
11.1.0.6 |
OERI [4000] during startup |
|
3115733 |
9.2.0.5, 10.1.0.2 |
OERI[4000] / index corruption can occur during index coalesce |
|
2959556 |
9.2.0.5, 10.1.0.2 |
STARTUP after an ORA-701 fails with OERI[4000] |
|
1371820 |
8.1.7.4, 9.0.1.4, 9.2.0.1 |
OERI:4506 / OERI:4000 possible against transported tablespace |
| + |
434596 |
7.3.4.2, 8.0.3.0 |
ORA-600[4000] from altering storage of BOOTSTRAP$ |
常见修复ORA-00600[4000]的手段包括使用ADJUST_SCN事件或者_MINIMUM_GIGA_SCN调整SCN,或者使用其他隐藏参数,或者对undo segment/ITL 使用BBED手动修改等。
如果自己搞不定可以找ASKMACLEAN专业数据库修复团队成员帮您恢复!
Bug 16761566 - INSTANCE FAILED TO START WITH ORA-600 [4000] [USN#]
注意对于 SYSTEM表空间执行exec dbms_space_admin.tablespace_fix_segment_extblks('SYSTEM');的话可能意外导致
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [4000], [170], [], [], [], [], [], [], [], [], [], []
所以建议永远也不要对 SYSTEM表空间执行,DBMS_SPACE_ADMIN.TABLESPACE_FIX_SEGMENT_EXTBLKS 。
为了修复这种损坏,一般需要用到PITR point in time recovery ; 如果根本没备份 ,那么实际只好手动修改bootstrap$对象的segment header了。