Foto de Roberto Sobrinho
Roberto Sobrinho

06/08/2025

⚠️ Atenção: este conteúdo pode causar taquicardia em DBAs que acreditam que senhas de DB Links estão sempre protegidas

Quando um DBA realmente precisa disso

Cenário real:
Um DB Link foi criado há anos diretamente com um DESCRIPTION completo no campo HOST, ou seja, a string de conexão foi definida dentro do próprio link, sem uso de tnsnames.ora.

Tudo funcionava normalmente até que o ambiente de destino mudou de host e serviço.
Agora é necessário recriar o DB Link com o novo destino, mas… ninguém sabe mais a senha do usuário usado originalmente.

E pior: essa senha é usada em outros ambientes, scripts e DB Links. Resetar a senha não é uma opção. Seria necessário atualizar vários sistemas ao mesmo tempo, o que aumenta o risco e a janela de indisponibilidade.

Se o DB Link tivesse sido criado usando um alias do tnsnames.ora, bastaria atualizar o arquivo.
Mas com o DESCRIPTION embutido, a única saída é recriar o DB link e para isso, você precisa da senha.

Esse script faz isso por você.
Testado com sucesso nos ambientes Oracle 12c e 19c.

Listando os DB Links existentes

SQL> @db_links.sql

OWNER     |DB_LINK                        |USERNAME       |HOST
----------|-------------------------------|---------------|--------------------------------------------------------
CHAVES    |PROF_GIRAFALES.DBLINK.VILA     |DONA_FLORINDA  |(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scan-prd-vendas)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=BDGIRAFALES.VILA)))
CHAVES    |SR_BARRIGA                     |CLEOTILDE      |(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scan-prd-vendas)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=HUBDB.VILA)))

SQL>

Executando o script adaptado

🔗 github.com/dbasobrinho/g_gold/blob/master/db_link_password_decrypt_RFS.sql

[oracle@SRVPRD-XPT1]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 6 13:19:51 2025
Version 19.28.0.0.0


SQL> @db_link_password_decrypt_RFS.sql

======================================================
Informe o OWNER do DB Link que deseja descriptografar:
======================================================
>> CHAVES

======================================================
Informe o nome do DB Link que deseja descriptografar:
======================================================
>> PROF_GIRAFALES.DBLINK.VILA

----------DECRYPTING DB LINK PASSWORD--------------
Initialization_vector            : 00099991030103000002000004020000
---------------------------------------------------
Ciphertext                       : 20551332WSDF56BC5B3FF7F0D3292QWSC53B37523825B069BA41172454F869040
---------------------------------------------------
Encryption key part 1            : F781503899E8F2015A24000FF7F0D3292QWGDFDSSF096B40D531B4367F3ACB71
---------------------------------------------------
Encryption key part 2            : 58D7D8C0ACFCB4DB5A6B52889A8AD326278EDCF781503899E8F2FEFRE7E5FED2623
---------------------------------------------------
Encryption key (Part 1 / Part 2) : AF5688F8351446DB5A6B52889A8AD32FEE53BC8685A6D830BFDAD3744820D7ED52
---------------------------------------------------
Hex (opcional)                   : 0D4D32435F323032355F4C696674981DE11C1C40485B2D4EE318EDBC3CB14EB3
---------------------------------------------------
!! Senha do DBLink descriptografada !!
====================[ GUINA NAO TINHA DO ]=====================
>>        Ch@v3s_3m_Ac@pulc0_2025!        <<
====================[ GUINA NAO TINHA DO ]=====================
. . .

PL/SQL procedure successfully completed.

SQL>

.

Como Usar

  1. Baixe o script adaptado direto do GitHub:
    🔗 github.com/dbasobrinho/g_gold/blob/master/db_link_password_decrypt_RFS.sql
  2. Conecte-se como SYSDBA e execute:

SQL> @db_link_password_decrypt_RFS.sql

  1. Informe o OWNER E nome do DB Link quando solicitado.
  2. A senha será exibida na tela, formatada e descriptografada.

Créditos e Referências

Script original:
Criado por Hatem Mahmoud
🔗 github.com/hatem-mahmoud/scripts/blob/master/db_link_password_decrypt.sql

Contribuições originais:
• Paul B. – algoritmo de descriptografia original
• Adric Norris – melhorias para uso no SQL*Plus e saída em texto limpo

Post técnico – Felipe Donoso – Oracle DBLink Password Decrypt (12.2 / 18c)
🔗 felipedonoso.cl/2021/11/oracle-dblink-password-decrypt-122-18c.html

Adaptação por DBASobrinho:
Script modificado para:
• Receber apenas o nome do DB Link como entrada
• Buscar e validar os dados automaticamente
• Exibir saída formatada com senha destacada
• Testado com sucesso no Oracle 12.2 e 19c

🔗 Versão adaptada:
github.com/dbasobrinho/g_gold/blob/master/db_link_password_decrypt_RFS.sql

e zas


#20250806 #DBASobrinho #GuinaNãoTinhaDó #BóBó #CaceteDeAgulha #OracleACE


Compartilhe

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print

⚠️ Atenção: este conteúdo pode causar taquicardia em DBAs que acreditam que senhas de DB Links estão sempre protegidas