ABMR=Automatic Block Media Recovery Background Process
ABMR 特性从 11g 版本开始启用。
从11g开始,在Active DataGuard中,如果我们使用real time的功能,我们就可以使用Automatic Block Media Repair的特性来修复主库的坏块。
ABMR 默认打开 "_auto_bmr" (默认为enabled)
SQL> col NAME format a15
SQL> col VALUE format a20
SQL> col DESCRIPTION format a30
SQL> select a.ksppinm name, b.ksppstvl value, a.ksppdesc description
2 from x$ksppi a, x$ksppcv b
3 where a.indx = b.indx and a.ksppinm like '_auto_bmr';
NAME VALUE DESCRIPTION
--------------- -------------------- ------------------------------
_auto_bmr enabled enable/disable Auto BMR
SQL>
因为当你使用了real time的功能后,你对主库的更新会迅速传到备库,如果此时主库出现物理坏块,我们可以相反的从备库上把已经applying的block在传回给主库。
这个操作对数据库和用户是透明的,不需要做任何人为的操作。 如果坏块不能修复(比如文件头损坏,单块的修复时间超过60秒,或者坏块的数量超过100个),那么会报ORA-1578的错误,需要DBA干预,进行手工修复。
使用ABMR需要在备库配置三个参数:
LOG_ARCHIVE_CONFIG
LOG_ARCHIVE_DEST_n -> 指向主库
FAL_SERVER -> 指向主库
ABMR只能修复常见的物理坏块,对于逻辑坏块,一般是建议在主库和备库上启用DB_BLOCK_CHECKING参数来进行预防。但是启用DB_BLOCK_CHECKING参数对DB的性能会大约1%到10%的性能影响。如果DML操作比较频繁,那么影响会更大一些,如果主库负载比较大,那么可以考虑只在备库上启用该参数。