首页 > Linux操作系统 > Linux操作系统 > 坏块恢复的研究(二)
检查数据文件,发现坏块:
C:\Documents and Settings\oracle>dbv file =D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
DBVERIFY: Release 10.2.0.4.0 - Production on 星期二 5月 6 15:26:14 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - 开始验证: FILE = D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
页 201 标记为损坏
Corrupt block relative dba: 0x018000c9 (file 6, block 201)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x018000c9
last change scn: 0x0000.000b0e50 seq: 0x1 flg: 0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x0e500601
check value in block header: 0x2969
computed block checksum: 0x3939
页 339 标记为损坏
Corrupt block relative dba: 0x01800153 (file 6, block 339)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x01800153
last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x0e910602
check value in block header: 0x4d14
computed block checksum: 0x1e36
页 474 标记为损坏
Corrupt block relative dba: 0x018001da (file 6, block 474)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x018001da
last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x0e910602
check value in block header: 0x6489
computed block checksum: 0x2106
页 492 标记为损坏
Corrupt block relative dba: 0x018001ec (file 6, block 492)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x018001ec
last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x0e910602
check value in block header: 0x2421
computed block checksum: 0x3a36
页 511 标记为损坏
Corrupt block relative dba: 0x018001ff (file 6, block 511)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x018001ff
last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x0e910602
check value in block header: 0x9f65
computed block checksum: 0x362f
DBVERIFY - 验证完成
检查的页总数: 1280
处理的页总数 (数据): 496
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 30
处理的总页数 (段) : 0
失败的总页数 (段) : 0
空的页总数: 749
标记为损坏的总页数: 5
流入的页总数: 0
最高块 SCN : 728966 (0.728966)
C:\Documents and Settings\oracle>
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1298184 bytes
Variable Size 171966712 bytes
Database Buffers 436207616 bytes
Redo Buffers 2895872 bytes
数据库装载完毕。
ORA-01113: 文件 6 需要介质恢复
ORA-01110: 数据文件 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF'
SQL> recover datafile 6;
完成介质恢复。
SQL> alter database open;
数据库已更改。
发现这个视图还没有逻辑检查到:
SQL> select * from v$database_block_corruption;
未选定行
SQL>
C:\Documents and Settings\oracle>rman target / nocatalog
恢复管理器: Release 10.2.0.4.0 - Production on 星期二 5月 6 15:28:55 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到目标数据库: DEVDB (DBID=557726576)
使用目标数据库控制文件替代恢复目录
RMAN> report schema;
数据库方案报表
永久数据文件列表
===========================
文件大小 (MB) 表空间 回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1 490 SYSTEM *** +DISK_GROUP1/devdb/datafile/system.260.652996483
2 35 UNDOTBS1 *** +DISK_GROUP1/devdb/datafile/undotbs1.292.652996483
3 270 SYSAUX *** +DISK_GROUP1/devdb/datafile/sysaux.293.652996483
4 5 USERS *** +DISK_GROUP1/devdb/datafile/users.291.652996483
5 104 EXAMPLE *** +DISK_GROUP1/devdb/datafile/example.256.652996665
6 10 TEST *** D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
临时文件列表
=======================
文件大小 (MB) 表空间 最大大小 (MB) 临时文件名称
---- -------- -------------------- ----------- --------------------
1 20 TEMP 32767 +DISK_GROUP1/devdb/tempfile/temp.257.652996649
RMAN>
RMAN> backup datafile 6;
启动 backup 于 2008-05-06 15:29:51
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 2008-05-06 15:29:52
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 05/06/2008 15:29:55 上) 失败
ORA-19566: 超出损坏块限制 0 (文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF)
备份时候发现坏块
SQL>select * from v$database_block_corruption;
未选定行
SQL> select * from v$backup_corruption;
未选定行
SQL> select * from v$copy_corruption;
未选定行
再次检查这些视图仍然没有检查到
RMAN> backup validate datafile 6 ;
启动 backup 于 2008-05-06 15:53:34
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 2008-05-06 15:53:37
RMAN> backup validate check logical datafile 6;
启动 backup 于 2008-05-06 16:07:26
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 2008-05-06 16:07:29
坏块信息被记录下来:
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
6 474 1 0 CHECKSUM
6 492 1 0 CHECKSUM
6 511 1 0 CHECKSUM
6 201 1 0 CHECKSUM
6 339 1 0 CHECKSUM
SQL> select * from v$backup_corruption;
RECID STAMP SET_STAMP SET_COUNT PIECE# FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# MAR CORRUPTIO
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------------------ --- ---------
1 654018816 654018814 9 1 6 201 1 0 YES CHECKSUM
2 654018816 654018814 9 1 6 339 1 0 YES CHECKSUM
3 654018816 654018814 9 1 6 474 1 0 YES CHECKSUM
4 654018816 654018814 9 1 6 492 1 0 YES CHECKSUM
5 654018816 654018814 9 1 6 511 1 0 YES CHECKSUM
可以在alert.log可以发现这些错误信息:
Hex dump of (file 6, block 511) in trace file d:\oracle\product\10.2.0\admin\devdb\udump\devdb_ora_3856.trc
Corrupt block relative dba: 0x018001ff (file 6, block 511)
Bad check value found during backing up datafile
Data in bad block:
type: 6 format: 2 rdba: 0x018001ff
last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x0e910602
check value in block header: 0x9f65
computed block checksum: 0x362f
Reread of blocknum=511, file=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF. found same corrupt data
Reread of blocknum=511, file=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF. found same corrupt data
Reread of blocknum=511, file=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF. found same corrupt data
Reread of blocknum=511, file=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF. found same corrupt data
Reread of blocknum=511, file=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF. found same corrupt data
检查损坏的段:
SQL> select segment_name,segment_type,relative_fno from dba_extents where file_id=6
2 and 201 between block_id and block_id+blocks -1;
SEGMENT_NAME SEGMENT_TYPE RELATIVE_FNO
-------------------- ------------------ ------------
EMP3 TABLE 6
SQL> select sysdate-1 from dual;
SYSDATE-1
-------------------
2008-05-05 16:32:17
以前的拷贝,而且数据已经变化很多,但是由于有这个段的原始数据:
RMAN> list datafilecopy all;
数据文件副本列表
关键字 文件 S 完成时间 Ckp SCN Ckp 时间 名称
------- ---- - ------------------- ---------- ------------------- ----
3 6 A 2008-05-05 15:32:16 725421 2008-05-05 14:07:38 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF1
RMAN> blockrecover corruption list restore until time 'sysdate -1';
启动 blockrecover 于 2008-05-06 16:33:17
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在从数据文件副本 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF1 还原块
正在开始介质的恢复
介质恢复完成, 用时: 00:00:07
完成 blockrecover 于 2008-05-06 16:33:29
备份以后检查坏块列表:
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
6 474 1 0 CHECKSUM
6 492 1 0 CHECKSUM
6 511 1 0 CHECKSUM
6 201 1 0 CHECKSUM
6 339 1 0 CHECKSUM
RMAN> backup datafile 6;
启动 backup 于 2008-05-06 16:36:54
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 2008-05-06 16:36:54
通道 ORA_DISK_1: 已完成段 1 于 2008-05-06 16:36:57
段句柄=+DISK_GROUP2/devdb/backupset/2008_05_06/nnndf0_tag20080506t163654_0.303.654021415 标记=TAG20080506T163654 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 2008-05-06 16:36:57
SQL> l
1* select * from v$database_block_corruption
SQL> /
未选定行
再次备份以后,坏块信息被清除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/175005/viewspace-261557/ ,如需转载,请注明出处,否则将追究法律责任。