Oracle 11G 新特性 Automatic block repair
Kevin Zou
2012-3-27
在Oracle 的世界中,corrupted block一般都是块分裂。(不是快分裂,呵呵) 一般是块头和块尾的TRAIL NUMBER不一致才导致的块分裂,这样的块分裂是逻辑损坏。
在强大的11GR2 中,Oracle 可以自动去检测CORRUPTED BLOCK而去修复。
在手工恢复的年代,如果遇到坏块,那需要RMAN 恢复对应的ARCHIVED LOGS去恢复;或者应用flashback logs去恢复;或者如果坏块所在的OBJECT是索引,那可以重新REBUILD ONLINE。那自动修复BLOCK是如何实现的?和常规的手工恢复是一样的?
先看下NEW FEATURE中的描述:
Automatic block repair allows corrupt blocks on the primary database or physical standby database to be automatically repaired, as soon as they are detected, by
transferring good blocks from the other destination. In addition, RECOVER BLOCK is enhanced to restore blocks from a physical standby database. The physical standby database must be in real-time query mode.
This feature reduces time when production data cannot be accessed, due to block corruption, by automatically repairing the corruptions as soon as they are detected in real-time using good blocks from a physical standby database. This reduces block recovery time by using up-to-date good blocks from a real-time, synchronized physical standby database as opposed to disk or tape backups or flashback logs.
主要有两点:
1) 这个自动修复是需要物理DG的配合才能完成的,而且要求DG建立在实时查询模式;
2) 该特性由于直接从DG中找到对应的BLOCK来恢复,而直接跳过RESTORE 归档日志或者FLASHBACK 日志,当然更快/更强大;
对物理DG有些限制:
1) 物理DG必须运行在实时查询模式,而该模式需要ACTIVE DATA GUARD Lience;
2) 物理DG 最好运行在实时应用模式;因为任何模式的DG保护模式都是支持自动块修复,但是修复主库中损坏块的效率大大依赖DG中没有损坏块的版本。
这段话说起来有点绕,还是举个简单的例子。
一个主库中CORRUPT块的SCN 为 1005,
而备库中对应块的SCN为1001,那ORACLE为修复该BLOCK,必须要让备库中的块SCN到达1005才能REPAIR。如果备库同步的时间越晚,那需要同步的时间就越多,修复的效率就越低。
反过来,如备库的块损坏,那ORACLE可以从主库中把对应的块拷贝过来,这需要在备库中的参数要有效的设置:
FAL_SERVER ,主库的NET SERICE NAME;
LOG_ARCHIVE_CONFIG
修复好后,会在库中alert日志写上日志;
这个自动修复,不会100%的成功,如果不能修复,那会报ORA-1578 的错误,
Error: ORA-1578
Text: ORACLE data block corrupted (file # %s, block # %s)
那这时需要DBA的介入,或者REBUILD或者跳过坏块导入/导出;
-THE END-
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/40239/viewspace-719636/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/40239/viewspace-719636/