Esta semana me deparei com o erro ORA-12514 ao adicionar um Exadata X9 produtivo para monitoramento no Cloud Control 13.5, todo o processo tinha sido validado no ambiente de homologação, abaixo segue troubleshoot realizado e doc da Oracle sobre o problema:
1 – Verificação de conectividade via tnsping do servidor com Enterprise Manager Cloud Control para os nós do Exadata X9 com sucesso:
[oracle@srv-oem]$ tnsping PROTPRD 10
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 12-SEP-2022 18:45:56
Copyright (c) 1997, 2022, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=exacc01db02-vip.lab.corp)(PORT=1521)))(CONNECT_DATA=(SID=PROTPRD2)))
OK (0 msec)
OK (0 msec)
OK (0 msec)
OK (0 msec)
OK (0 msec)
OK (0 msec)
OK (0 msec)
OK (0 msec)
OK (0 msec)
OK (0 msec)
ShellScript2 – Verificação de conectividade com os bancos usando o sqlplus do Enterprise Manager no home $OMS_HOME=/u01/app/oracle/middleware/ com sucesso.
[oracle@srv-oem01 /]$ export OMS_HOME=/u01/app/oracle/middleware/
[oracle@srv-oem01 /]$ $OMS_HOME/bin/sqlplus sys@"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=exacc01-scan.lab.corp)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PROTPRDX9.lab.corp)))" as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Mon Sep 12 18:52:06 2022
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
SQL>
ShellScript3 – Ao realizar uma breve pesquisa, encontrei o (Doc ID 2027310.1), após ler esta nota, verifiquei que o arquivo listener.ora do ambiente produtivo que apresentava o erro ORA-12514 ao ser monitorado, possuía a entrada abaixo:
USE_SID_AS_SERVICE_LISTENER = ON
ShellScriptA entrada USE_SID_AS_SERVICE_LISTENER foi utilizada justamente na migração para contornar a limitação das aplicações que infelizmente só conectavam via SID, segundo a nota, este sintoma só será um problema se o valor SID do banco de dados for diferente do SERVICE_NAME, justamente a situação que nos estávamos enfrentando.
4 – A solução segundo o DOC, seria criar um segundo listener para ser usando no monitoramento dos bancos pelo Enterprise Manager Cloud Control, lembrando que este problema é afetado pelas versões do Cloud Control 13c/12c com bancos em container database com target (CDB).
Fica a dica para quem encontrar este mesmo problema, passamos horas tentando entender o comportamento e o porque dos erros de conexão apenas no ambiente produtivo ORA-12514, agradeço ao meu amigo de trabalho JP (João Paulo Rocon), sempre metido em problemas estranhos comigo.