Guillermo, parte de nuestro equipo, nos hizo el favor de redactar este escrito ya que controla muy bien dicho tema.
Solución:
Una mejor manera es, si tiene acceso a la máquina host y la instalación de Oracle es usar el comando: lsnrctl status
. Esto funciona en máquinas Unix, Linux y Windows. El comando de estado le mostrará todos los oyentes (y sus SID asociados).
C:>lsnrctl status
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-JUN-2009 16:16:34
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
Start Date 13-JUN-2009 12:04:14
Uptime 2 days 4 hr. 12 min. 19 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File C:oracleXEapporacleproduct10.2.0servernetworkadminlistener.ora
Listener Log File C:oracleXEapporacleproduct10.2.0servernetworkloglistener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC_FOR_XEipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ThinkpadT61)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "XE_XPT" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "xe" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
The command completed successfully
En el ejemplo anterior, puede conectarse a la base de datos XE utilizando Conect Strings XEXDB, XE_XPT o XE.
La respuesta corta es que necesita acceso al sistema operativo host:
Para Unix, ps -ef | grep pmon
le mostrará uno o más procesos con nombres como ora_pmon_xxxx
y xxxx
es el nombre de la instancia.
En Windows, supongo que hay una firma similar en la lista de tareas.
En la práctica, esta información generalmente se la proporciona quien administra la base de datos cuando se crea su cuenta de conexión.
La pregunta se reduce a: qué ORACLE_SID o servicios son compatibles con el agente de escucha que se ejecuta en el host X puerto Y. Dependiendo de qué tan seguro esté configurado este agente de escucha, puede ver esto usando el comando lsnrctl de un cliente que tiene lsnrctl instalado. Para poder hacer esto, necesita una instalación del servidor Oracle en ese cliente. Cuando tengas eso puedes emitir
lsnrctl
set current_listener (description=(address=(host=X)(port=Y)(protocol=tcp)))
status
La configuración predeterminada del relleno del oyente de 10 g provoca el siguiente resultado: TNS-01189: el oyente no pudo autenticar al usuario
Esto se debe a que, desde 10g, el valor predeterminado de Oracle tiene la seguridad activada: autenticación del sistema operativo local, lo que significa que solo el usuario del sistema operativo local que inició el agente de escucha puede emitir comandos lsnrctl al agente de escucha. El oyente se negará a responder a cualquier otro usuario.