诊断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 邮箱:[email protected]
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 |
Leave a Reply