Erro no Oracle Data Guard - Force closing the keystore for standby rekey.

This post is also available in: English

Eu tenho configurado uma BD Primary executando Oracle Database 11g com apenas um nó de Physical Standby. Esses dias, tentei criar uma coluna criptografada dentro de uma tabela para testar algumas funcionalidades.

Eu acabei, sem querer, estragando as coisas:

Force closing the keystore for standby rekey.
Please re-copy the keystore from primary before re-open as needed.
Apply redo for database master key re-key failed: new master key does not exist in the keystore
MRP0: Background Media Recovery terminated with error 28374
Errors in file /u02/diag/rdbms/dwqual02/dwqual02/trace/dwqual02_pr00_37644.trc:
ORA-28374: typed master key not found in wallet
Managed Standby Recovery not using Real Time Apply
Recovery interrupted!
Recovered data files to a consistent state at change 13453232993830

O meu BD de standby parou de receber os redo logs por causa da adição de uma simples coluna criptograda!

O problema é que o meu Wallet estava configurado apenas no meu BD Primary, não no STBY. Então, eu prossegui com a criação dele no lado do BD STBY.

Primeiramente, verifique o seu arquivo sqlnet.ora para ver se está sendo utilizado um Wallet apenas para criptografia (o "encryption wallet" deve ser compartilhado entre todas as instâncias de seu DG):

[oracle@blqa09bddsne001 admin]$ cat sqlnet.ora
SQLNET.WALLET_OVERRIDE = TRUE

WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = /u01/app/oracle/wallet/normal)
    )
  )

ENCRYPTION_WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = /u01/app/oracle/wallet/encrypt)
    )
  )
[oracle@blqa09bddsne001 admin]$

Como pode ver, no meu caso eu tenho um Wallet próprio para Criptografias e outro Wallet para outras tarefas (como por exemplo a integração de conexão EUS-OUD).

Se você tiver apenas um "WALLET_LOCATION", ou ainda, se não tiver qualquer coisa definida, o Oracle irá usar um "Wallet" para tudo. Neste caso, vá até o caminho padrão do Wallet (provavelmente $ORACLE_BASE/admin/$ORACLE_SID/wallet).

Você também pode verificar onde o waller está rodando a query abaixo na sua primary instance:

SQL> set lines 1000
SQL> format col WRL_PARAMETER a40
SQL> select * from v$encryption_wallet;

WRL_TYPE             WRL_PARAMETER                            STATUS
-------------------- ---------------------------------------- ------------------
file                 /u01/app/oracle/wallet/encrypt           OPEN

SQL>

Tudo que você precisa agora é copiar (scp) o wallet de criptografias (ou o padrão se você not usar o "ENCRYPTION_WALLET_LOCATION") da sua instância primary para a standby.

Não esquecça de colocá-lo no diretório padrão ou no caminho apontado pelo seu sqlnet.ora, se existir alguma entrada lá.

Após isto, force o Oracle a fehcar o Wallet executando "ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;" e reinicie o processo de apply. Ou então, apenas reinicie a sua instância standby.

Ótimo, o seu Data Guard deverá estar agora finalmente aplicando os redo logs novamente!

Gostou? Não deixe de comentar ou deixar um 👍!

 

Deixe um comentário

Seu e-mail não será publicado.