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

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

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

    1.适用范围   版本8.1.7.4到10.2.3[release 8.1.7 to 10.2]  

2.目标

  这个文档主要提供一个修补方案,当SYSTEM 回滚段出项ORA-600[4139]/ORA-600[4194],这个情况会阻止数据库开启。 支持当SYSTEM回滚段被影响时,让恢复的时间点在逻辑不一致之前。 ORA-600[4193]和ORA-[4104经常由新事务并且发生在undo的段头(TRN CTL / FREE BLOCK POOL的信息)和undo 段块中。如果这个情况发生在非SYSTEM的undo段上,可以直接删除这些回滚段。这是在涉及到SYSTEM回滚段时,一个手动处理的方法。  

3.修复

  在进行操作之前,首先进行备份 在SYSTEM 回滚段头中使用BBED 设置ktuxc.ktuxcnfb 和 ktuxc.ktuxcfbp[0..x].ktufbuba 为0。这样做的话,Oracle在新的事务的时候会使用空的块,不会对undo块头和undo块进行比较。   例如: 如下是一个回滚段头的dump

TRN CTL:: seq: 0x00af chd: 0x0036 ctl: 0x002a inc: 0x00000000 nfb: 0x0001

mgc: 0x8002 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)

uba: 0x00400006.00af.0f scn: 0x07be.a0bae152

Version: 0x01

FREE BLOCK POOL::

uba: 0x00400006.00af.0f ext: 0x0 spc: 0x13b4

uba: 0x00000000.00a8.0d ext: 0x7 spc: 0x1a2c

uba: 0x00000000.009b.0b ext: 0x3 spc: 0x1c08

uba: 0x00000000.0092.27 ext: 0x3 spc: 0x12d0

uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  1.设置bbed合适的偏移量,修改 ktuxc.ktuxcnfb 为0X0000。在这个例子:0X0001 2.设置合适的偏移量,将所有非零的ktuxcfbp[0..x].ktufbuba设置为0X00000000.在这个例子中,只有ktuxc.ktuxcfbp[0].ktufbuba是非零的值0X00400006   3.在块已经被修改好后设置块的校验码为一个新的值,或者禁用块中的checksum。   部分块在修改后的dump如下:

The partial block dump after the modification is:

TRN CTL:: seq: 0x00af chd: 0x0036 ctl: 0x002a inc: 0x00000000 nfb: 0x0000

mgc: 0x8002 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)

uba: 0x00400006.00af.0f scn: 0x07be.a0bae152

Version: 0x01

FREE BLOCK POOL::

uba: 0x00000000.00af.0f ext: 0x0 spc: 0x13b4

uba: 0x00000000.00a8.0d ext: 0x7 spc: 0x1a2c

uba: 0x00000000.009b.0b ext: 0x3 spc: 0x1c08

uba: 0x00000000.0092.27 ext: 0x3 spc: 0x12d0

uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0

 
  nfb=ktuxc.ktuxcnfb --在空块池中非空槽位的数目 ktuxc.ktuxcfbp=空闲块池条目   4.打开数据库并且收缩system 回滚段。这个只是为了从“擦伤”处释放段中空闲的extent: alter rollback segment SYSTEM shrink;