问题描述
RMAN备份失败,报错如下:
一般坏块处理过程
首先确定是什么段、哪个段坏了,是索引还是表?
执行以下语句看哪个段坏了
SQL>Select b.segment_name,b.segment_typefrom dba_extents a, dba_segments b
where a.file_id=<F> and <B>between a.block_id and a.block_id+a.blocks-1
and a.segment_name=b.segment_name anda.owner=b.owner;
这里的 F 指的是 file#,B 指的是 block#
2. 如果是物理坏块,需要更换磁盘,分几种情况:
1)如果是文件系统且做了raid的,在messages里会显示具体哪个磁盘出问题了,更换磁盘,系统会自动恢复磁盘。
2)如果是文件系统且没做raid,但有备份和归档,在messages里会显示具体哪个磁盘出问题了,更换磁盘,然后用数据文件备份和归档、在线日志恢复到最后的时间点。
3)如果是文件系统且没做raid,没有备份,那么就要按下面的步骤3里的操作恢复好坏块后,再更换磁盘。
4)如果是asm管理磁盘阵列,将亮红灯的磁盘拔掉,换个新的,系统会自动恢复磁盘。
3. 如果是逻辑坏块,就看是索引坏块还是表坏块。
如果是索引坏块,那么直接删除索引,重建索引就好。
如果是表坏块,分三种情况:
1)有rman备份,利用rman备份恢复坏块。命令:blockrecoverdatafile file#。
本次处理过程
使用dbv检查一下是否有数据坏块
[oracle@svr1-219backup_script]$ dbv file=/oradata3/o219g2/income_gs_main_tst_tbs12.dbf
DBVERIFY:Release 10.2.0.4.0 - Production on Fri Nov 2 11:52:58 2012
Copyright(c) 1982, 2007, Oracle. All rightsreserved.
DBVERIFY- Verification starting : FILE = /oradata3/o219g2/income_gs_main_tst_tbs12.dbf
Page386924 is marked corrupt
Corruptblock relative dba: 0x0d85e76c (file 54, block 386924)
Badcheck value found during dbv:
Datain bad block:
type: 6 format: 2 rdba: 0x0d85e76c
last change scn: 0x02d1.805a7552 seq: 0x1 flg:0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x75520601
check value in block header: 0x584e
computed block checksum: 0xfbab
Page404230 is marked corrupt
Corruptblock relative dba: 0x0d862b06 (file 54, block 404230)
Badcheck value found during dbv:
Datain bad block:
type: 6 format: 2 rdba: 0x0d862b06
last change scn: 0x02d1.805a7552 seq: 0x1 flg:0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x75520601
check value in block header: 0x339
computed block checksum: 0x7b41
DBVERIFY- Verification complete
TotalPages Examined : 512000
TotalPages Processed (Data) : 304782
TotalPages Failing (Data) : 0
TotalPages Processed (Index): 115775
TotalPages Failing (Index): 0
TotalPages Processed (Other): 9000
TotalPages Processed (Seg) : 0
TotalPages Failing (Seg) : 0
TotalPages Empty : 82441
TotalPages Marked Corrupt : 2
TotalPages Influx : 0
Highestblock SCN : 2163414262(721.2163414262)
[oracle@svr1-219backup_script]$
查看是什么对象存在坏块
SQL> SELECT segment_type, owner, segment_name
2 FROM dba_extents
3 WHERE file_id = 54
4 and 386924 betweenblock_id AND block_id + blocks - 1;
SEGMENT_TYPE OWNER SEGMENT_NAME
------------------ -------------------------------------------------------------------
INDEX INCOME_GS_MAIN_TST PK_T_RPT_SOA_RECON_DETAIL
SQL> SELECT segment_type, owner, segment_name
2 FROM dba_extents
3 WHERE file_id = 54
4 and 404230 betweenblock_id AND block_id + blocks - 1;
SEGMENT_TYPE OWNER SEGMENT_NAME
------------------ -----------------------------------------------------
INDEX INCOME_GS_MAIN_TST PK_T_RPT_SOA_RECON_DETAIL
处理坏块
上面显示是索引,这样处理起来比较简单,删除重建就可以了