O Oracle Data Guard Broker permite o Fast Start Failover, que executa o Failover para o Standby em caso de falha na Produção.
Este cenário inclui um computador Observer, que precisa apenas do Oracle Client instalado. Se o Standby e o Observer perderem contato com a Produção por um determinado (configurável) número de segundos, o Failover é executado.
Além da perda de comunicação, o Fast Start Failover permite a execução do Failover em situações de falhas específicas, por exemplo, se a área de ARCHIVEs encher. Pode ser configurado também de forma que se um determinado erro ORA acontecer, o Failover é executado.
No exemplo abaixo, eu tenho configurado como condições extras para o Failover as opções “Corrupted Controlfile”, “Corrupted Dictionary”, “Datafile Offline”, além do erro “ORA-27102: out of memory”.
[oracle@OracleDG01 ~]$ dgmgrl SYS/Nerv2012@NERV01 DGMGRL for Linux: Version 11.2.0.1.0 - 64bit Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected. DGMGRL> SHOW CONFIGURATION; Configuration - DRSolution Protection Mode: MaxPerformance Databases: nerv01 - Primary database nerv02 - (*) Physical standby database nerv03 - Logical standby database Fast-Start Failover: ENABLED Configuration Status: SUCCESS DGMGRL> SHOW FAST_START FAILOVER; Fast-Start Failover: ENABLED Threshold: 30 seconds Target: nerv02 Observer: OracleDG04.localdomain Lag Limit: 600 seconds Shutdown Primary: TRUE Auto-reinstate: TRUE Configurable Failover Conditions Health Conditions: Corrupted Controlfile YES Corrupted Dictionary YES Inaccessible Logfile NO Stuck Archiver NO Datafile Offline YES Oracle Error Conditions: ORA-27102: out of memory
Em seguida, eu adiciono a condição extra “Stuck Archiver”.
DGMGRL> ENABLE FAST_START FAILOVER CONDITION "Stuck Archiver" Succeeded. DGMGRL> EXIT
Agora simulo um “enchimento” da área de Archives, alterando o diretório de gravação para um onde o usuário oracle não tem permissão (o diretório /).
[oracle@OracleDG01 ~]$ sqlplus / AS SYSDBA SQL*Plus: Release 11.2.0.1.0 Production on Mon Apr 16 10:46:02 2012 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SHOW PARAMETER LOG_ARCHIVE_DEST_1 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_1 string LOCATION=/home/oracle/archives/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=NERV01 log_archive_dest_10 string log_archive_dest_11 string log_archive_dest_12 string log_archive_dest_13 string log_archive_dest_14 string log_archive_dest_15 string log_archive_dest_16 string log_archive_dest_17 string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_18 string log_archive_dest_19 string SQL> ALTER SYSTEM SET log_archive_dest_1='LOCATION=/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=NERV01'; System altered.
Forço então a geração de um ARCHIVE, que fica congelada.
SQL> ALTER SYSTEM SWITCH LOGFILE;
No computador que funciona como Observer, vejo a mensagem da execução do Failover.
DGMGRL> START OBSERVER; Observer started 10:47:21.05 Monday, April 16, 2012 Initiating Fast-Start Failover to database "nerv02"... Performing failover NOW, please wait... Failover succeeded, new primary is "nerv02" 10:47:37.44 Monday, April 16, 2012
E no Alert Log da Produção, vejo a confirmação do motivo do Failover.
Mon Apr 16 10:46:49 2012
A user-configurable Fast-Start Failover condition was detected. The primary is shutting down due to Stuck Archiver .
Database NERV01 will not be automatically reinstated.
USER (ospid: 6689): terminating the instance due to error 16832
Instance terminated by USER, pid = 6689
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
Com 20 anos de experiência profissional, Oracle ACE Member – eleito pela Oracle Corporation um dos maiores especialistas do mundo em Oracle Database- Trabalhou em grande parte dos maiores bancos de dados Oracle do Brasil. Certificado em Oracle, SQL Server, DB2, MySQL, Sybase e Websphere.
Conselheiro do GPO e do GUOB, palestrante do ENPO, GUOB Tech Day e Oracle Open World, escritor da Revista SQL Magazine e Instrutor na Nerv.