ORA-12537: TNS:connection closed + TNS-12649: Unknown encryption or data integrity algorithm

Tentativa de conexão no banco de dados através do service name registrado estaticamente no listener, falha com o seguinte erro:

sqlplus sys/senha@//exdr-mcjd72:1521/TESTE

SQL*Plus: Release 11.2.0.4.0 Production on Tue May 11 14:49:23 2021

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:
ORA-12537: TNS:connection closed

E no alert log da instância apresenta essa mensagem:

Fatal NI connect error 12649, connecting to:
 (LOCAL=NO)

  VERSION INFORMATION:
        TNS for Linux: Version 11.2.0.4.0 - Production
        Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
        TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
  Time: 11-MAY-2021 14:49:23
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12649

TNS-12649: Unknown encryption or data integrity algorithm
    ns secondary err code: 0
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
opiodr aborting process unknown ospid (62830) as a result of ORA-609

Causa

O arquivo sqlnet.ora utilizado pelo Listener (Grid Home) tem parâmetros não suportados pela instância do banco de dados, potencialmente a versão do Grid Home é superior do DB Home.

Solução

Definir a variável TNS_ADMIN no registro estático do listener, apontando para o diretório do sqlnet.ora no ORACLE_HOME do banco de dados.

Exemplo

O registro estático no listener estava dessa forma:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = TESTE)
      (ORACLE_HOME = /u02/app/oracle/product/11.2.0/dbhome_2)
      (SID_NAME = TESTE)
    )
  )

O ORACLE_HOME do banco de dados TESTE é /u02/app/oracle/product/11.2.0/dbhome_2, então podemos incluir uma variável de ambiente TNS_ADMIN apontando para o diretório DB_HOME/network/admin:

Basta apenas incluir a diretiva ENVS, ficando dessa forma:

SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
    (GLOBAL_DBNAME = TESTE)
    (ORACLE_HOME = /u02/app/oracle/product/11.2.0/dbhome_2)
    (SID_NAME = TESTE)
    (ENVS = "TNS_ADMIN=/u02/app/oracle/product/11.2.0/dbhome_2/network/admin/,ORACLE_BASE=/u02/app/oracle")
  )
 )

Por fim, recarregue o listener:

lsnrctl reload

2 thoughts on “ORA-12537: TNS:connection closed + TNS-12649: Unknown encryption or data integrity algorithm”

  1. Muchas gracias, he estado trabajando en hacer que funcionara una conexion estatica de una BD version ya vieja hacia si misma, en un RAC con un grid mas nuevo. Hasta que encontre este articulo, usando esta informacion ya funciono.

Leave a Reply

Scroll to Top

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading