【翻译自mos文章】怎么检测并解决datafile os header(Block Zero)的 损坏- - ORA-27047 DBV-107 ORA-1157/ORA-27048

怎么检测并解决datafile os header(Block Zero)的 损坏- - ORA-27047 DBV-107 ORA-1157/ORA-27048

来源于:

How to Detect and Fix a Corruption in the Datafile OS Header/Block Zero - ORA-27047 DBV-107 ORA-1157/ORA-27048 (文档 ID 360032.1)

适用于:

Oracle Database - Enterprise Edition - Version 8.0.5.0 to 12.1.0.2 [Release 8.0.5 to 12.1]

Information in this document applies to any platform.

***Checked for relevance on 02-FEB-15***

症状:

oracle file中的os block知识:
 1.The OS Block Header 是datafile 中的第一个block,它被oracle用来存储 操作系统信息。
 2.它的block号是零(It is the Block Zero),而 datafile的header 的 block号是1,这两个header不是一回事。
 3.Block Zero 的损坏 不会导致data的损坏,在oracle 11g之前,Block Zero的损坏不能被dbv 或者rman 检测出来。
   在11g的dbv已经被改进(enhanced),11g的dbv 能检测到Block Zero的损坏。
 4.dbfsize 可以用来 检测Block Zero的一致性.
  注意:关于dbfsize的示例,请见我的文章:http://blog.csdn.net/msdnchina/article/details/43345445
 5.当Block Zero被损坏时,有时 database可能被open起来,并且没有错误(no errors)。
   Block Zero在如下情况下被检查(checked):
    5.1 一些特定的数据库操作,比如'CREATE CONTROLFILE'
    5.2 在11g版本中,在database 被open的过程中。

症状:

1.当 os block header 无效时,创建控制文件可能会报某一个特定datafile上的ORA-27047

  ORA-27047 : unable to read the header block of file.

下面是hpux的一个例子:

  ORA-1503: CREATE CONTROLFILE failed
  ORA-1565: error in identifying file '/oradata/users.dbf'
  ORA-27047: unable to read the header block of file
  HP-UX Error: 22: Invalid argument
  Additional information: 2

2.低于11g版本的dbv实用工具不会报数据文件上的corruption,11g的dbv 会报错误 "DBV-00107: Unknown header format"

3.database upgrade(open migrate) 或者 normal open 可能会失败,报错误: ORA-01157 ORA-27048

 ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
 ORA-01110: data file 1: '/oracle/dbs/system.dbf'
 ORA-27048: skgfifi: file header information is invalid
 

原因:

datafile中的OS block header (Block 0) 被损坏

1.通过Oracle 实用工具dbfsize可以辨别corruption

   $ dbfsize /oradata/users.dbf
   Header block magic number is bad

dbfsize辨别的其他错误还有:

   /oradata/users.dbf: Header block file size is bad; trying raw file format...
   /oradata/users.dbf: Header block magic number is bad
   

2.无效的datafile copy 会导致该问题。 一个例子是当使用os命令 dd 来进行裸设备和文件系统的file copying时。 Reference Bug 4307836 (closed as not a bug) in HPUX.

3.文件系统损坏可能会导致此问题。

4.NetBackup 可能会导致该问题,请见Note:373595.1

5.Bug 4721022 / Bug 4724358  may also cause it. See Note 4724358.8

解决方案:

使用好的控制文件拷贝 open database, 并 resize datafile

1.resizing datafile 将会重新格式化 os block header

  alter database datafile '/oradata/users.dbf' resize <new size>;

运行dbfsize 来确认block 已经被修复:

  $ dbfsize /oradata/users.dbf
  Database file: /oradata/users.dbf
  Database file type: file system
  Database file size: 51200 8192 byte blocks

注意:resize 原大小,重建还是报错,需要resize一个不同的大小。--依据来源:http://www.cnblogs.com/rootq/archive/2012/12/12/2814579.html

2.如果是文件系统损坏导致的该问题,在该文件系统上运行fsck,可能会fix该问题。

3.解决该问题的另外一个方法就是:从backup中restore recover 受到影响的file

References

NOTE:4724358.8 - Bug 4724358 - ORA-27045 ORA-1578 ORA-27047 corruption caused by DBMS_LDAP

BUG:4721022 - ORA-27045 REPORTED INTERMITTENTLY AND WITH BLOCK CORRUPTIONS

BUG:4724358 - USING DBMS_LDAP WITH CONNECTION POOLING CAN CAUSE CORRUPTION / ORA-27045

NOTE:373595.1 - ORA-1578 ORA-27047 ORA-27048 Corrupt blocks when using RMAN / NetBackup

时间: 2024-10-06 20:58:19

【翻译自mos文章】怎么检测并解决datafile os header(Block Zero)的 损坏- - ORA-27047 DBV-107 ORA-1157/ORA-27048的相关文章

【翻译自mos文章】 在错误的从os级别remove掉 trace file 之后,怎么找到该trace file的内容?

在错误的从os级别remove掉 trace file 之后,怎么找到该trace file的内容? 參考原文: How to Find the Content of Trace File Generated for an Oracle Process after Removing the Trace File by Mistake at OS Level (Doc ID 805083.1) 适用于: Oracle Database - Enterprise Edition - Version

【翻译自mos文章】job 不能自动执行的解决方法

job 不能自动执行的解决方法 参考原文: Jobs do not execute automatically (Doc ID 309945.1) 适用于: Oracle Server - Enterprise Edition - Version: 9.2.0.4 This problem can occur on any platform. 症状: Job 不能自动执行. JOB_QUEUE_PROCESSES 已经设置为大于0的值 你已经检查过 sga 变量kkjsre 的值,该值为0 例子

【翻译自mos文章】job 不能自动运行--这是另外一个mos文章,本文章有13个解决方法

job 不能自动运行--这是另外一个mos文章 参考原文: Jobs Not Executing Automatically (Doc ID 313102.1) 适用于: Oracle Database - Enterprise Edition - Version 9.2.0.3 to 10.2.0.4 [Release 9.2 to 10.2] Information in this document applies to any platform. 症状: job已经很长时间没有自动运行了.

【翻译自mos文章】升级到11.2.0.4之后在alert日志中出现 NUMA 警告信息

注:与本文有关的文章为:http://blog.csdn.net/msdnchina/article/details/43763927 升级到11.2.0.4之后在alert日志中出现 NUMA 警告信息 翻译自mos文章:NUMA warning message appear after upgrade to 11.2.0.4 (文档 ID 1600824.1)1 适用于: Oracle Database - Enterprise Edition - Version 11.2.0.4 and

【翻译自mos文章】对于oracle 数据库来说,OGG的抽取进程什么时候到database中获取数据?

对于oracle 数据库来说,OGG的抽取进程什么时候到database中获取数据? 参考原文: When GoldenGate Fetches Data From The Database On Extraction For Oracle (Doc ID 1059583.1) 适用于: Oracle GoldenGate - Version 4.0.0 and later Information in this document applies to any platform. 解决方法: 问

【翻译自mos文章】rac数据库中,HC_&lt;SID&gt;.dat文件被其他Oracle_Home下的实例所使用。

rac数据库中,HC_<SID>.dat文件被其他Oracle_Home下的实例所使用. 参考原文: RAC database HC_<SID>.dat is used by instance of different Oracle_Home (Doc ID 1618161.1) 适用于: Oracle Database - Enterprise Edition - Version 11.2.0.0 and later Information in this document ap

【翻译自mos文章】修改被 DB Control 监控的db (10g and 11g)中 dbsnmp密码的方法

修改被 DB Control 监控的db (10g and 11g)中 dbsnmp密码的方法 参考原文: How to Change DBSNMP Password in Database 10g and 11g Monitored by DB Control (Doc ID 259387.1) 适用于: Enterprise Manager for Oracle Database - Version 10.1.0.4 to 11.2.0.3 [Release 10.1 to 11.2] In

【翻译自mos文章】怎么样kill 一个被挂起的自动物化视图刷新job?

怎么样kill 一个被挂起的自动物化视图刷新job? 参考原文:How to kill a hung automated materialized view refresh job (文档 ID 341842.1) 适用于: Oracle Server - Enterprise Edition - Version 8.1.5.0 to 10.2.0.5 [Release 8.1.5 to 10.2] Information in this document applies to any plat

【翻译自mos文章】当NFS server 宕机后,Oracle 数据库 冻结并且alert 文件里没有任何错误

当NFS server 宕机后,Oracle 数据库 冻结并且alert 文件里没有任何错误 翻译自mos文章:When NFS Server Is Down, Oracle Server Freezes With No Errors In Alert Log File (文档 ID 1316251.1) 适用于: Oracle Server - Enterprise Edition - Version: 10.2.0.4 and later   [Release: 10.2 and later