Pular para o conteúdo principal

Postagens

ORA-28365: wallet is not open - Oracle Data Guard + Oracle TDE

Problema: No meu ambiente de testes usando Oracle Data Guard e com algumas tablespaces com TDE me deparei com o seguinte erro: PR00 (PID:396056): MRP0: Background Media Recovery terminated with error 28365 2024-03-15T03:12:42.419136+00:00 Errors in file /u01/app/oracle/diag/rdbms/thdr/thdr/trace/thdr_pr00_396056.trc: ORA-28365: wallet is not open 2024-03-15T03:12:43.000571+00:00 Recovery interrupted! Recovered data files to a consistent state at change 32232590 Stopping change tracking Solução: Verifiquei a wallet na base de dados standby e estava fechada. set lines 300 col name for a15 col wrl_type for a10 col status for a30 select p.con_id, p.name, p.open_mode, ew.wrl_type, ew.wallet_type, ew.status from v$pdbs p join v$encryption_wallet ew on (ew.con_id = p.con_id) order by p.con_id;     CON_ID NAME            OPEN_MODE  WRL_TYPE   WALLET_TYPE          STATUS ---------- --------------- ---------- ---------- -------------------- ------------------------------          2 PDB$SEED     
Postagens recentes

Oracleasm Deletedisk - Unable to open device or resource busy failed Unable to clear disk

Após a migração de storages utilizando Oracle ASM em um ambiente, precisei remover os discos que não estavam mais sendo utilizados. Porém quando fui utilizar o deletedisk no oracleasm recebi o seguinte erro: # oracleasm deletedisk -v HITACHI33 Clearing disk header: oracleasm-write-label: Unable to open device "/dev/oracleasm/disks/HITACHI33": Device or resource busy failed Unable to clear disk "HITACHI33" Fiz a verificação para ver ser o disco ainda estava em uso, mas não obtive nenhum retorno: # fuser /dev/oracleasm/disks/HITACHI33 # lsof /dev/oracleasm/disks/HITACHI33 Então lendo alguns posts e artigos vi que o problema poderia estar relacionado ao multipath do sistema operacional. Então utilizei o -f para realizar um flush, mas recebi a mensagem abaixo: # multipath -f /dev/oracleasm/disks/HITACHI33 Jun 22 08:43:21 | must provide a map name to remove Utilizei o comando do ASM para verificar o mapeamento do disco.

DELETE WHERE - ORA-01031: privilégios insuficientes

Recebi um email falando que o usuário estava tentando realizar um delete e já tinha sido concedido o privilégio de delete na tabela em questão, mas mesmo assim não estava conseguindo.  Depois de entender a situação, achei interessante compartilhar o conteúdo porque é um conceito básico de banco de dados. Em um ambiente de testes, repliquei a situação para ficar mais fácil de entender. 1) Criei uma tabela de testes e inseri registros. create table thiago.tb_teste (id number,a varchar2(10)); insert into thiago.tb_teste values (1,'Thiago'); insert into thiago.tb_teste values (2,'Thiago'); insert into thiago.tb_teste values (3,'Thiago'); insert into thiago.tb_teste values (4,'Thiago'); insert into thiago.tb_teste values (5,'Thiago'); commit; 2) Criei o usuário user_delete e dei permissão para deletar na tabela tb_teste create user user_delete identified by "user"; grant create session to user_delete; grant delete on th

Replace disk Oracle ASM

 A partir da versão 12.1 tem um comando bem mais eficiente para substituir os discos que estão com algum problema dentro dos diskgroups ASM é replace_disk_clause Mas para minha situação ele não funcionou. Pelos testes e leitura na documentação, ele só vai funcionar se o seu disco antigo estiver defeituoso.  No meu caso, o disco não estava com problemas eu só precisava substituir. Então vejam o erro que me retornou: SQL> alter diskgroup TESTE REPLACE DISK TESTE01 with '/dev/oracleasm/disks/TESTE05' force; alter diskgroup TESTE REPLACE DISK TESTE01 with '/dev/oracleasm/disks/TESTE05' force * ERROR at line 1: ORA-15032: not all alterations performed ORA-15145: ASM disk 'TESTE01' is online and cannot be replaced. Repare que tentei até usar o force , mas mesmo assim ele retornou o erro pois o disco que estava tentando substituir , TESTE01, não estava com problema. Então a solução foi o usar o comando anterior a versão 12.1, usar ADD e DROP na me

Como NÃO criar ou alterar a senha de usuários no banco de dados Oracle

Neste post vou passar uma simples falha de segurança que ocorre quando estamos conectando em banco de dados remoto e não temos a conexão criptografada. Irei utilizar o comando do linux tcpdump para escutar toda conexão de rede na minha máquina de banco de dados na porta 1521. tcpdump -As 1518 -i any port 1521 Fiz os teste em duas versões do banco de dados Oracle 11g e 18c. Podemos ver que a falha de segurança ocorre nas duas versões. Versão 11g   [oracle@myhost]$ sqlplus system@bd_teste SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 23 15:03:01 2020 Copyright (c) 1982, 2013, Oracle.  All rights reserved. Enter password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> create user user_teste identified by "minhasenha"; User created. Analisando a saída do tcpdump podemos ver em texto claro a nossa senha.   15:13:20.64

Gerenciando e Configurando o Oracle TFA ( Trace File Analyzer)

Aqui passo um breve resumo dos comandos necessários para gerência do TFA. Verificar Configurações:   tfactl print repository    O comando acima te passa um resumo, caso precise da configuração completa use: tfactl print config Gerência: tfactl start tfactl stop tfactl status tfactl disable - Desabilitar início automático tfactl enable - Habilita início automático Expurgo repositório O Oracle TFA monitor expurga automaticamente do repositório quando o espaço livre está menor que 1Gb. O processo de expurgo começa com as coletas de maior tamanho para as de menor tamanho, até que o repositório tenho espaço livre suficiente. Oracle TFA apaga automaticamente por padrão somente as coletas mais antigas que o parâmetro minagetopurge . Por padrão é 12h Para mudar o tempo de expurgo tfactl set minagetopurge=48 Habilitar expurgo automático tfactl set autopurge=ON Mudar o local do repositório  tfactl set repositorydir=/tmp/ Mudar o tamanho do repositório tfactl set reposizeMB=12480 Expurgo manual

ORA-01623 ORA-00312 - Removendo redo logs

Após realizar um restore de um ambiente de Oracle RAC para um single instance usando snapshot de storage, tentei recriar os redo logs recebi o seguinte erro durante a exclusão de um grupo de discos. SQL> alter database drop logfile group 2; ORA-01623: o log 2 é o log atual para a instância UOW (thread 1) - não é possível eliminar ORA-00312: thread 2 do log 1 on-line: '+DATA/UOW/ONLINELOG/group_2.1638.1051804433' ORA-00312: thread 2 do log 1 on-line: '+DATA/UOW/ONLINELOG/group_2.981.1051804433' O erro quer dizer que o grupo de redo pertence a outra thread. Quer dizer que ele pertence a outra instância do ambiente RAC. Como no meu caso não precisarei mais dela, basta usar o comando: SAL> alter database disable thread 2; Database altered.   Usei o SQL abaixo para gerar os comandos para excluir os redo logs SQL> select distinct 'alter database drop logfile group '||(group#)||';' from v$log where thread#=2; 'ALTERDATABASEDROPLOGFILEGROUP'||(G