Oracle Data Guard: Automatic Block Media Recovery
O Active Data Guard, além de permitir a utilização do Standby para leituras, fornece automaticamente um recurso inestimável para a disponibilidade, o Automatic Block Media Recovery.
Ao detectar um bloco corrompido na Produção, o Active Data Guard copia a última versão saudável do bloco do Standby, e vice-versa.
Para forçar o uso desta funcionalidade, forcei uma corrupção em um DATAFILE com o comando dd do Linux, depois fiz um SELECT em uma tabela desta DATAFILE, o que fez com que o Oracle Database notasse a corrupção e acionasse o ABMR. Veja abaixo que no Alert Log a recuperação foi realmente automática e sem intervenção.
Mon Apr 16 12:05:19 2012
Hex dump of (file 5, block 131) in trace file /u01/app/oracle/diag/rdbms/nerv01/NERV01/trace/NERV01_ora_7291.trc
Corrupt block relative dba: 0x01400083 (file 5, block 131)
Bad header found during validation
Data in bad block:
type: 231 format: 7 rdba: 0x716d646c
last change scn: 0x7370.6d646c70 seq: 0x61 flg: 0x6f
spare1: 0x6c spare2: 0x6d spare3: 0x6fe7
consistency value in tail: 0x70650601
check value in block header: 0x646d
computed block checksum: 0x9628
Reread of blocknum=131, file=/u01/app/oracle/oradata/NERV01/teste01.dbf. found same corrupt data
Reread of blocknum=131, file=/u01/app/oracle/oradata/NERV01/teste01.dbf. found same corrupt data
Reread of blocknum=131, file=/u01/app/oracle/oradata/NERV01/teste01.dbf. found same corrupt data
Reread of blocknum=131, file=/u01/app/oracle/oradata/NERV01/teste01.dbf. found same corrupt data
Reread of blocknum=131, file=/u01/app/oracle/oradata/NERV01/teste01.dbf. found same corrupt data
Mon Apr 16 12:06:35 2012
Hex dump of (file 5, block 131) in trace file /u01/app/oracle/diag/rdbms/nerv01/NERV01/trace/NERV01_ora_7293.trc
Corrupt block relative dba: 0x01400083 (file 5, block 131)
Bad header found during multiblock buffer read
Data in bad block:
type: 231 format: 7 rdba: 0x716d646c
last change scn: 0x7370.6d646c70 seq: 0x61 flg: 0x6f
spare1: 0x6c spare2: 0x6d spare3: 0x6fe7
consistency value in tail: 0x70650601
check value in block header: 0x646d
computed block checksum: 0x9628
Reading datafile '/u01/app/oracle/oradata/NERV01/teste01.dbf' for corruption at rdba: 0x01400083 (file 5, block 131)
Reread (file 5, block 131) found same corrupt data
Starting background process ABMR
Mon Apr 16 12:06:35 2012
ABMR started with pid=36, OS id=7295
Auto BMR service is active.
Requesting Auto BMR for (file# 5, block# 131) Waiting Auto BMR response for (file# 5, block# 131)
Auto BMR successful WARNING: AutoBMR fixed mismatched on-disk block 716d646c with in-mem rdba 1400083.
Este é um dos exercícios feitos no Treinamento de Oracle Data Guard na Nerv.
O Oracle Data Guard é um produto muito maior do que a maioria dos DBAs conhece, e é a solução de alta disponibilidade em bancos de dados mais avançada que conheço. Neste Treinamento os alunos irão, sem virtualização alguma, criar diversos bancos Standby, de todos os tipos (Physical, Logical, Snapshot), além de utilizar o Active Data Guard, Data Guard Broker, Switchover, Switchback, Failover, Failback, e muito mais. Acho que só de Physical Standby criamos um 6, de todas as formas possíveis.
Agenda: http://nervinformatica.com.br/
Valores: http://nervinformatica.com.br/valores.asp
Inscrições: contato@nervinformatica.com.br