ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN出现文件损坏ORA-19566: exceeded limit of 0 corrupt blocks 处理

RMAN出现文件损坏ORA-19566: exceeded limit of 0 corrupt blocks 处理

原创 Linux操作系统 作者:tolywang 时间:2007-03-03 00:00:00 0 删除 编辑
http://www.itpub.net/showthread.php?s=&threadid=727648

Primary DB:
Linux AS3.0 + Oracle 9.2.0.4 RAC



output filename=/backup/ocfs_data/intel/tools01.dbf recid=362 stamp=615574424
channel dmd2: copied datafile 7
output filename=/backup/ocfs_data/intel/users01.dbf recid=363 stamp=615574428
channel dmd2: copied datafile 8
output filename=/backup/ocfs_data/intel/xdb01.dbf recid=364 stamp=615574437
channel dmd2: copied datafile 9
output filename=/backup/ocfs_data/intel/undotbs02.dbf recid=365 stamp=615574645
released channel: dmd2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of copy command on dmd2 channel at 02/26/2007 16:56:10
ORA-19566: exceeded limit of 0 corrupt blocks for file /ocfs_data/intel/base_data01.dbf
ORA-19600: input file is datafile 10 (/ocfs_data/intel/base_data01.dbf)
ORA-19601: output file is datafile-copy 0 (/backup/ocfs_data/intel/base_data01.dbf)

RMAN>
RMAN>
RMAN>
RMAN> **end-of-file**

***
Corrupt block relative dba: 0x0280cab8 (file 10, block 51896)
Fractured block found during datafile copy
Data in bad block -
type: 0 format: 2 rdba: 0x0000cab8
last change scn: 0x0000.00000000 seq: 0x1 flg: 0x05
consistency value in tail: 0x00000000
check value in block header: 0xcdb8, computed block checksum: 0x1
spare1: 0x0, spare2: 0x0, spare3: 0x0
***

一下是回复:


应该是file 10 的块51896损坏

如果有备份的话使用blockrecover修复一下


-------------------------------------------------

Find the segment and rebuild it.

If it is an index, rebuild it directly.
If it is a table, can you query all rows from it?

查詢壞塊:

SELECT segment_name,segment_type,extent_id,block_id, blocks
from dba_extents t
where file_id = 41
AND 55692 between block_id and (block_id + blocks - 1)

--------------------------------------------------------------------------

SELECT segment_name,segment_type,extent_id,block_id, blocks
from dba_extents t
where file_id = 10
AND 51896 between block_id and (block_id + blocks - 1) ;

查了下, 还好, 是一个小表, 不知道是否能exp然后导入,还是move tablespace ? 不清楚其他的data保存到这里了是否会导致同样的问题 ??

Recovering the Data Blocks
Surprisingly, the recovery mechanism is simple and can be done online.
Shutting down the database or disconnecting the users is unnecessary.
Example 1: Recovering data blocks individually. You may want to
recover individual data blocks, if you know the file-id(s) and block-id(s).
You may get this information from the log files of the backup process,
alert.log file, v$backup_corruption, v$copy_corruption,
v$database_block_corruption views, or from users. The last one is not
aimed at though.

RMAN> BLOCKRECOVER DATAFILE 10 BLOCK 51896;

Exp and imp the table will be okay .

----------------------------------------------------------------------------------

可以成功執行 select count(*) .

你可以用standby 库的相同的文件修复这个文件的这个块啊?
SORRY,看错了,还以为你是DATAGUARD,还是EXP/IMP吧.

--------------------------------------------------------------------------------------

既然select count(*) 能够成功
那么你试验一下create table table_bak as select * from table
能否成功
如果不行使用
ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10';
这是内部事件,设置在全表扫描时跳过损坏的数据块.
然后导出该表进行重建,在导出的过程中要注意导出的数据总数与select count(*) 是否一致,如果不一致那么说明有数据丢失,你得确认能否允许这些数据的丢失

---------------------------------------------------------------------------------------

可以参考一下Oracle Database 10g:Administration Workshop II SG的12章 Dealing with database corruption.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84507/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13381656