BLOCKRECOVER恢复坏块

RMAN提供了单独恢复个别BLOCK的功能,这种功能作为普通恢复方法的补充,对于恢复数据库中出现的坏块可以快速的进行恢复。
RMAN的BLOCKRECOVER是利用一个全备份作为基础,在此基础中应用日志,对于需要恢复的个别BLOCK进行恢复。
下面演示一个BLOCKRECOVER的简单例子,首先是构造一个坏块,最简单的办法莫过于UltraEdit了。

SQL> SELECT COUNT(*) FROM T3;
COUNT(*)
----------
50272
SQL> SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID), DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) FROM T3 WHERE ROWNUM = 1;
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------ ------------------------------------
4 40

SQL> SHOW PARAMETER BLOCK_SIZE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 16384
计算一下表T3在文件中的偏移地址:
SQL> SELECT 16*1024*40 FROM DUAL;

16*1024*40
----------
655360

SQL> SELECT TO_CHAR(655360, 'XXXXXX') FROM DUAL;
TO_CHAR
-------
A0000

用UltraEdit打开RELATIVE_FNO为4的数据文件,定位到地址为A0000位置,在后面修改几个值,保存后,再次查询T3表:
SQL> SELECT COUNT(*) FROM T3;
SELECT COUNT(*) FROM T3
*第 1 行出现错误:
ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 40)
ORA-01110: 数据文件 4: 'E:ORACLEORADATAYTKDATAFILEO1_MF_USERS_1TDY4JMK_.DBF'
现在已经模拟出坏块,可以使用RMAN的BLOCKRECOVER进行恢复了。不过恢复的前提是拥有这个数据文件的一个全备份,并且有这个备份以来的归档日志。

RMAN> BLOCKRECOVER DATAFILE 4 BLOCK 40;

启动 blockrecover 于 15-6月 -07分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 正在从数据文件副本 E:ORACLEBACKUPUSERS.DBF 复原块
正在开始介质的恢复介质恢复完成, 用时: 00:00:07
完成 blockrecover 于 15-6月 -07
通过执行上面简单的命令,已经将数据文件中的坏块进行了修复,注意RMAN的BLOCKRECOVER在恢复的时候是不需要将数据文件置于脱机状态的。
恢复完成后,最后再次查询T3表:

SQL> SELECT COUNT(*) FROM T3;
COUNT(*)
----------
50272

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

转载于:http://blog.itpub.net/22990797/viewspace-753482/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RMAN-10038 是一个错误代码,它表示在执行逻辑坏块恢复过程时出现了问题。逻辑坏块恢复通常用于修复由软件错误或非硬件的数据损坏所引起的数据库坏块。在进行逻辑坏块恢复时,可能会遇到 RMAN-10038 错误,需要进行以下步骤来解决问题。 首先,我们需要查看 RMAN 的日志文件,了解更具体的错误信息。在日志中,我们可能会找到有关坏块的详细信息,例如受影响的数据文件和坏块号码。这些信息可以帮助我们更好地理解问题所在。 其次,我们可以尝试使用 RMAN 的“BLOCKRECOVER”命令来手动恢复逻辑坏块。这将会使用备份集中的有效数据来替换坏块。我们可以根据日志中提供的具体信息,指定需要恢复的数据文件和坏块号码,然后运行“BLOCKRECOVER”命令。 然而,如果 RMAN-10038 错误仍然存在,我们可能需要进一步的调试。我们可以尝试使用“ANALYZE”命令来检查数据文件的完整性,并查找其他的坏块。我们还可以尝试使用其他恢复方法,例如使用物理坏块恢复 (block media recovery) 或块转储进行修复。 最后,我们应该确保使用最新的软件补丁和数据库版本,以避免类似的错误。我们还应该定期备份数据库,并测试备份的可用性,以确保在出现坏块或其他数据损坏时能够及时恢复。 总之,RMAN-10038 错误表示在逻辑坏块恢复过程中出现问题。我们可以通过查看日志文件,尝试手动恢复坏块,进行进一步的调试,并采取预防措施来解决这个问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值