【翻譯自mos文章】怎麼檢測並解決datafile os header(Block Zero)的 損壞-,

來源:互聯網
上載者:User

【翻譯自mos文章】怎麼檢測並解決datafile os header(Block Zero)的 損壞-,

怎麼檢測並解決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

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.