使用RMAN RECOVER BLOCK修复受损的数据块

首先对数据库进行rman备份,然后根据下列步骤操作

1.使用工具破坏数据块
可以使用UltraEdit或者WinHex打开文件修改某个数据块,然后保存。
2.访问损坏的数据

sqlplus "/ as sysdba"

> startup

ORACLE 例程已经启动。

 

Total System Global Area   59842188 bytes

Fixed Size                   454284 bytes

Variable Size              33554432 bytes

Database Buffers           25165824 bytes

Redo Buffers                 667648 bytes

数据库装载完毕。

数据库已经打开。

3.检查坏块

select * from V$DATABASE_BLOCK_CORRUPTION;

图片

也可以使用RMAN验证数据文件,以发现坏块:

首先查看模拟坏块的数据文件序号:

select file_name,tablespace_name,status,online_status from dba_data_files;

Select file_name,tablespace_name,file_id "AFN",relative_fno "RFN"

From dba_data_files;

图片

 

RMAN> backup validate datafile 9;

图片

此时alert_.log文件中会记录RMAN发现的坏块信息:

Corrupt block relative dba: 0x02401376 (file 9, block 4982)

Bad check value found during backing up datafile

Data in bad block:

 type: 0 format: 2 rdba: 0x02401376

 last change scn: 0x0000.00000000 seq: 0x1 flg: 0x05

 spare1: 0x0 spare2: 0x0 spare3: 0x0

 consistency value in tail: 0x00000001

 check value in block header: 0xb636

 computed block checksum: 0x1111

Reread of blocknum=4982, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Reread of blocknum=4982, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Reread of blocknum=4982, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Reread of blocknum=4982, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Reread of blocknum=4982, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Hex dump of (file 9, block 6927) in trace file e:\oracle\product\admin\azuay\udump\azuay_ora_2436.trc

Corrupt block relative dba: 0x02401b0f (file 9, block 6927)

Bad check value found during backing up datafile

Data in bad block:

type: 0 format: 2 rdba: 0x02401b0f

 last change scn: 0x0000.00000000 seq: 0x1 flg: 0x05

 spare1: 0x0 spare2: 0x0 spare3: 0x0

 consistency value in tail: 0x00000001

 check value in block header: 0xbe4f

 computed block checksum: 0x1110

Reread of blocknum=6927, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Reread of blocknum=6927, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Reread of blocknum=6927, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Reread of blocknum=6927, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

Reread of blocknum=6927, file=E:\ORACLE\PRODUCT\ORADATA\AZUAY\CAS.DBF. found same corrupt data

5.查询RMAN发现的坏块信息

select * from v$database_block_corruption where file#=9;

图片

6.执行恢复

RMAN> startup mount;

RMAN> blockrecover datafile 9 block 5935 from backupset;

图片

图片

7.检查数据的恢复

SQL> alter database open;

数据库已更改。

SQL> select * from v$database_block_corruption where file#=9;

图片

此时数据已经恢复,但是block corruption信息仍然记录在数据库中,直到下次validate才会清除这部分信息:

RMAN> backup validate datafile 9;

图片

此时从数据库中查询,坏块信息被清除。

SQL> select * from v$database_block_corruption where file#=9;

未选定行

图片

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值