Recovery de Redo Log sem multiplexação

Recovery de Redo Log sem multiplexação

Introdução

Este artigo discute como restaurar o redo log do banco de dados Oracle. Caso o arquivo de redo não esteja acessível por alguma razão, o banco de dados não irá funcionar corretamente.

Redo Logs

Redo logs registra todas as alterações feitas nos datafiles. Cada vez que os dados são alterados no banco de dados, essa alteração é gravada primeiro no registro de redo log online, antes de ser aplicada nos datafiles.

Se um backup de um datafile em algum ponto do tempo e um conjunto completo de redo logs a partir de um ponto para frente estiverem disponíveis, o banco de dados pode reaplicar as alterações registradas nos redo logs, para reconstruir o conteúdo do datafile em qualquer ponto entre o último backup e o final do último registro do redo log. No entanto isto só é possível se o banco estiver com o modo de archive log habilitado.

Os arquivos de redo possui os seguinte status:

UNUSED – Redo log on-line nunca foi gravado. Este é o estado de um redo log que acabou de ser adicionado, ou apenas depois de um RESETLOGS, quando não é o redo log atual.

CURRENT – Log de redo atual. Isto implica que o redo log está ativo. O redo log pode estar aberto ou fechado.

ACTIVE – Log está ativo, mas não é o log atual. É necessário para recuperação de falhas. Pode estar em uso para recuperação de bloco. Pode ou não ser arquivado.

CLEARING – O log está sendo recriado como um log vazio após uma instrução ALTER DATABASE CLEAR LOGFILE. Depois que o log é limpo, o status muda para UNUSED.

CLEARING_CURRENT – O log atual está sendo limpo de um encadeamento fechado. O log pode permanecer nesse status se houver alguma falha no switch, como um erro de E / S que esteja gravando o novo cabeçalho de log.

INACTIVE – O log não é mais necessário para a recuperação da instância. Pode estar em uso para recuperação de mídia. Pode ou não ser arquivado.

Cenário

Banco de dados versão 12.1.0.2 em modo archive log, com redo log sem multiplexação. Foi realizado a deleção de um arquivo de redo não arquivado e inativo com o objetivo de simular uma corrupção.

Analisando o ambiente

tail -n 20 $ORACLE_BASE/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log 

Additional information: 3  
Master background archival failure: 313  
  
Mon Jul 29 16:35:58 2019  
Errors in file /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_m000_7142.trc:  
ORA-00313: a abertura falhou para os membros do grupo 2 de log do thread 1  
ORA-00312: thread 2 do log 1 on-line: '/u01/app/oracle/oradata/ORCL/redo02.log'  
ORA-27037: não é possével obter status do arquivo  
Linux-x86_64 Error: 2: No such file or directory  
Additional information: 3  
Mon Jul 29 16:36:58 2019  
Errors in file /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_arc2_3190.trc:  
ORA-00313: a abertura falhou para os membros do grupo 2 de log do thread 1  
ORA-00312: thread 2 do log 1 on-line: '/u01/app/oracle/oradata/ORCL/redo02.log'  
ORA-27041: não é possével abrir arquivo  
Linux-x86_64 Error: 2: No such file or directory  
Additional information: 3  
  
ls -1 /u01/app/oracle/oradata/ORCL/redo*.log  
redo01.log  
redo03.log  
  
SQL> set lines 210 pages 1000;  
SQL> select * from v$log;  
  
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM     CON_ID  
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------- ------------ -------- ----------  
         1          1        118   52428800        512          1 NO  CURRENT                1560045 29/07/19   2,8147E+14                   0  
         2          1        116   52428800        512          1 NO  INACTIVE               1559806 29/07/19      1560041 29/07/19          0  
         3          1        117   52428800        512          1 NO  INACTIVE               1560041 29/07/19      1560045 29/07/19          0  

Como o redo log está com status inativo e ainda não foi gerado o archive log, não será possível um recover completo (Media recover) até a sequence 118. Neste caso será realizado uma operação de recover incompleto (também conhecida como Point-in-Time) que é voltar à base a um SCN que não seja último para consertar um erro de usuário ou na falta de um archive.

Recuperação

sqlplus / as sysdba
SQL> shutdown immediate;  
Banco de dados fechado.  
Banco de dados desmontado.  
Instância ORACLE desativada.  
  
SQL> startup mount;  
Instância ORACLE iniciada.  
  
Total System Global Area 1157627904 bytes  
Fixed Size                  2923632 bytes  
Variable Size             436208528 bytes  
Database Buffers          704643072 bytes  
Redo Buffers               13852672 bytes  
Banco de dados montado.  
  
SQL> recover database until cancel;  
Recuperação de mídia concluída.  
SQL> alter database open resetlogs;  
  
Banco de dados alterado.  
  
SQL> select * from v$log;  
  
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM     CON_ID  
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------- ------------ -------- ----------  
         1          1          1   52428800        512          1 NO  CURRENT                1561077 29/07/19   2,8147E+14                   0  
         2          1          0   52428800        512          1 YES UNUSED                       0                     0                   0  
         3          1          0   52428800        512          1 YES UNUSED                       0                     0                   0  
  
SQL> select status, open_mode from v$instance,v$database;  
  
STATUS       OPEN_MODE  
------------ --------------------  
OPEN         READ WRITE  

ls -1 /u01/app/oracle/oradata/ORCL/redo*.log  
redo01.log  
redo02.log
redo03.log  

Para evitar este tipo de situação é recomendo que os arquivos de redo logs estejam multiplexados, preferencialmente em discos diferentes. Para garantir que não haja perda de informação em caso de corrupção de um dos arquivos de redo log.

ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/ORCL/redo01b.log' TO GROUP 1;  
ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/ORCL/redo02b.log' TO GROUP 2;  
ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/ORCL/redo03b.log' TO GROUP 3;

COMENTÁRIOS

Política de Privacidade e Termos de Uso de Dados - Dataunique Tecnologia da Informação LTDA

A Dataunique Tecnologia da Informação LTDA, empresa devidamente registrada sob o CNPJ 15.179.495/0001-35, compromete-se a proteger a privacidade e segurança dos dados pessoais de seus usuários. Esta política descreve como coletamos, usamos, compartilhamos e protegemos as informações pessoais fornecidas por você.

1. Informações Coletadas

1.1. A Dataunique coleta informações fornecidas voluntariamente por você, como nome, endereço, e-mail, número de telefone, entre outras, durante o cadastro ou utilização de nossos serviços.

1.2. Dados de acesso e utilização de nossos serviços, como endereço IP, tipo de navegador, páginas visitadas e tempo de permanência, podem ser automaticamente registrados para melhorar a qualidade dos serviços oferecidos.

2. Uso de Informações

2.1. As informações coletadas são utilizadas para fornecer, manter, proteger e melhorar nossos serviços, bem como para desenvolver novos serviços.

2.2. Podemos utilizar seus dados para personalizar conteúdos, oferecer suporte ao cliente, enviar atualizações, newsletters e informações sobre novos produtos ou serviços.

3. Compartilhamento de Informações

3.1. A Dataunique não compartilha informações pessoais com terceiros, exceto quando necessário para cumprir obrigações legais, proteger nossos direitos ou em situações autorizadas por você.

4. Segurança de Dados

4.1. Utilizamos medidas de segurança adequadas para proteger suas informações contra acessos não autorizados, alterações, divulgação ou destruição não autorizada.

5. Cookies e Tecnologias Semelhantes

5.1. Utilizamos cookies e tecnologias semelhantes para melhorar a experiência do usuário, analisar o tráfego e personalizar conteúdos.

6. Seus Direitos

6.1. Você tem o direito de acessar, corrigir ou excluir suas informações pessoais. Para exercer esses direitos ou esclarecer dúvidas, entre em contato com nosso Encarregado de Proteção de Dados (DPO) através do e-mail [email protected].

7. Alterações na Política de Privacidade

7.1. Reservamo-nos o direito de alterar esta política a qualquer momento, e as alterações serão comunicadas por meio de nossos canais de comunicação.

Ao utilizar nossos serviços, você concorda com os termos desta Política de Privacidade. Recomendamos a leitura regular desta política para se manter informado sobre como tratamos seus dados pessoais.

Dados de Contato:

  • Endereço: Rua T30, 2515, Quadra 99 Lote 11/14, Sala 1404 e 1405, Edif Walk Bueno Business Edif e Lifestyle, SET BUENO, Goiânia – GO, 74215-060.
  • Telefone: (62) 99906-0584
  • Fax/Mensageiro Online: (62) 3223-2257
  • E-mail: [email protected]

Data de vigência: [Data de atualização da política]

Atenciosamente,

Dataunique Tecnologia da Informação LTDA