BBED> dump /v 显示是否替换成功
File: /oracle/CRM/pos.dbf (5)
Block: 135 Offsets: 8169 to 8191 Dba:0x01400087
-------------------------------------------------------
6a69756a 69616e20 6c6f7665 206f7261 l jiujian love ora
636c6501 06b7f5 l cle..孵
设置表空间offline再online或者重启数据库便可看到坏块效果
SQL> select * from jiujian;
select * from jiujian
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 5, block # 135)
ORA-01110: data file 5: '/oracle/CRM/pos.dbf'
五 对坏块修复
1 查询坏块信息
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
5 135 1 0 CHECKSUM
2 修复该块 下面给出两种方法
运行 recover …. Block 命令恢复指定的块
[oracle@oracle ~]$ rman target /
Recovery Manager:> Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: CRM (DBID=3599153036)
RMAN> recover datafile 5 block 135;
Starting recover at 2012-09-23 11:10:32
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=199 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=72 device type=DISK
channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00005
channel ORA_DISK_1: reading from backup piece /backup/20120913_ebnl4bil_1_1
channel ORA_DISK_1: piece handle=/backup/20120913_ebnl4bil_1_1 tag=TAG20120913T195604
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:35
starting media recovery
archived log for thread 1 with sequence 82 is already on disk as file /oracle/archive/1_82_791488634.dbf
archived log for thread 1 with sequence 83 is already on disk as file /oracle/archive/1_83_791488634.dbf
archived log for thread 1 with sequence 84 is already on disk as file /oracle/archive/1_84_791488634.dbf
archived log for thread 1 with sequence 85 is already on disk as file /oracle/archive/1_85_791488634.dbf
archived log for thread 1 with sequence 86 is already on disk as file /oracle/archive/1_86_791488634.dbf
archived log for thread 1 with sequence 87 is already on disk as file /oracle/archive/1_87_791488634.dbf
archived log for thread 1 with sequence 88 is already on disk as file /oracle/archive/1_88_791488634.dbf
archived log for thread 1 with sequence 89 is already on disk as file /oracle/archive/1_89_791488634.dbf
archived log for thread 1 with sequence 90 is already on disk as file /oracle/archive/1_90_791488634.dbf
archived log for thread 1 with sequence 91 is already on disk as file /oracle/archive/1_91_791488634.dbf
archived log for thread 1 with sequence 92 is already on disk as file /oracle/archive/1_92_791488634.dbf
archived log for thread 1 with sequence 93 is already on disk as file /oracle/archive/1_93_791488634.dbf
archived log for thread 1 with sequence 94 is already on disk as file /oracle/archive/1_94_791488634.dbf
archived log for thread 1 with sequence 95 is already on disk as file /oracle/archive/1_95_791488634.dbf
archived log for thread 1 with sequence 96 is already on disk as file /oracle/archive/1_96_791488634.dbf
archived log for thread 1 with sequence 97 is already on disk as file /oracle/archive/1_97_791488634.dbf
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=81
channel ORA_DISK_1: reading from backup piece /backup/20120913_ednl4bp0_1_1
channel ORA_DISK_1: piece handle=/backup/20120913_ednl4bp0_1_1 tag=TAG20120913T195928
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
media recovery complete, elapsed time: 00:00:03
Finished recover at 2012-09-23 11:11:19
SQL> select * from jiujian;
DES
------------------------------
zhangxu love oracle
SQL> select * from v$database_block_corruption;
no rows selected
可看到运行 recover …. Block 命令恢复指定的块后清除视图v$database_block_corrutption中坏块内容
2对视图V$DATABASE_BLOCK_CORRUPTION中的所有坏块进行修复 Recover corruption list;(此处已经重新构造了坏块)
[oracle@oracle ~]$ rman target /
Recovery Manager:> Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: CRM (DBID=3599153036)
RMAN> recover corruption list;
Starting recover at 2012-09-24 21:42:01
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=70 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=131 device type=DISK
channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00005
channel ORA_DISK_1: reading from backup piece /backup/20120913_ebnl4bil_1_1
channel ORA_DISK_1: piece handle=/backup/20120913_ebnl4bil_1_1 tag=TAG20120913T195604
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:35
starting media recovery
media recovery complete, elapsed time: 00:00:07
Finished recover at 2012-09-24 21:42:47
SQL>select * from v$database_block_corruption;
no rows selected
总结:数据块恢复命令 recover datafile xxx block xxx 和命令 recover corruption list 都可以恢复坏块,并自动清除视图v$database_block_corruption 中关于坏块的记录