Pular para o conteúdo

Se a área de ARCHIVE encher, execute FAILOVER

Se a área de ARCHIVE encher, execute FAILOVER

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

Ricardo Portilho Proni

Ricardo Portilho Proni

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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress