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 👍!