Email: service@parnassusdata.com 7 x 24 online support!

    You are here

诊断Oracle ORA-00227: 控制文件中检测到损坏的块 错误

诊断Oracle ORA-00227: 控制文件中检测到损坏的块 错误

 
ORA-00227: 控制文件中检测到损坏的块: (块 , # 块 )
ORA-00227: corrupt block detected in control file: (block , # blocks )

 

诊断Oracle ORA-00227错误  , oerr  ora 00227

Error:   ORA 227
Text:    corrupt block detected in controlfile: (block %s, # blocks %s)
—————————————————————————
Cause:   A block header corruption or checksum error was detected on reading
the controlfile.
Action:  Use the CREATE CONTROLFILE or RECOVER DATABASE USING BACKUP
CONTROLFILE command.

 

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

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

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

 

 

ORA-00227错误的触发原因是oracle发现控制文件存在讹误/坏块。一般认为是外部硬件的损坏导致了controlfile控制文件的损坏从而引发该问题。

对于其诊断可以首先确认数据库中的最大redo sequence#号,相关的bug有20324049。 可以通过下列SQL来确认数据库内的最大online redologfile的sequence#号是否接近最大值的4294967295

 

set numwidth 15

select max(FHCSQ)
, case trunc(max(FHCSQ)/4294967295,1) 
  when 0.9 then 'WARNING: Reference Bug 20324049' 
             else 'NO Warning' end "Bug 20324049"
from x$kcvfh;

 

也建议对现有的控制文件首先备份,一般的cp(copy) 或dd均可以。备份是为了之后的恢复和进一步诊断问题原因。

 

一般来说ORA-00227会伴随ora-00202出现,同时也会给出存在问题的控制文件controlfile的名字,可以阅读alert.log来获得更多信息。

可以使用dbv工具来验证控制文件, 首先使用dbfsize来获取控制文件块大小

例如:

$ dbfsize /oradata/controlfile/control1.ctl

Database file: /oradata/controlfile/control1.ctl
Database file type: file system
Database file size: 614 16384 byte blocks

In this case the control file block size is 16384.

 

如上述获得的控制文件块大小为16k,则使用dbv并指定

dbv file=/oradata/controlfile/control1.ctl blocksize=16384

对于ora-00227主要由以下几种解决方案:

1、若是由多个控制文件复用,而仅仅是其中一个控制文件出现ora-00227的情况其实很简单,将好的控制文件来覆盖坏的控制文件,或者在参数control_files中去掉坏的控制文件均可以。

2、如果没有多路复用控制文件,或者方案1不奏效。 那么考虑重建控制文件;重建控制文件需要注意千万别漏了数据文件信息

3、 从老的备份中恢复出控制文件,恢复后使用RECOVER DATABASE USING BACKUP CONTROLFILE命令做recover

 

与ora-00227相关的一些bug如下:

 

NB Bug Fixed Description
  19613828 12.1.0.1 ORA-227 intermittent corrupt block in control file with “Fractured block found during control file block read” during concurrent controlfile updates
  10384285 11.2.0.1.BP10, 11.2.0.2.4, 11.2.0.2.BP04, 11.2.0.3, 12.1.0.1 Controlfile corruption / ORA-227 after I/O error during controlfile creation
  9549042 11.1.0.7.11, 11.2.0.1.BP06, 11.2.0.2, 12.1.0.1 Read of corrupt CONTROLFILE block does not check other mirror/s (ORA-227)
  2649033 9.2.0.3, 10.1.0.2 LMON may crash instance with ORA-227 errors
  566271 8.0.4.4, 8.0.5.0, 8.1.5.0 ORA-00227 rather than ORA-00209 with incorrect DB_BLOCK_SIZE specified