Para aquellos que trabajan un entorno de servidor compartido, donde tenemos varias instancias y varios listeners vamos a ver un poco de registro de servicios.
Podemos agregar al archivo de inicialización, para que registren los dispachers con un listener que no sea el default propuesto por oracle.
Debido a que ambos, el parámetro LOCAL_LISTENER y el atributo LISTENER permiten al proceso PMON registrar la información del dispacher con el listener, no es necesario especificar el parámetro y el atributo si los valores son los mismos.
Ahora veamos un ejemplo de un server donde tengo el listener default de ASM , más otros listeners y otras instancias.
Comencemos revisando que listeners tengo corriendo.
[oracle@gontlinux dbs]$ ps -ef | grep inh oracle 8218 1 0 Oct15 ? 00:00:03 /u01/app/oracle/product/10.2.0/db_TOPAS/bin/tnslsnr LISTENER -inherit oracle 7798 1 0 Oct15 ? 00:00:03 /u01/app/oracle/product/10.2.0/db_TOPAS/bin/tnslsnr TOPAS_GONTLINUX -inherit oracle 18998 15040 0 16:03 pts/1 00:00:00 grep inh
Bien , ahora con el comando status verifico que instancias tiene asignadas el listener TOPAS_GONTLINUX.
[oracle@gontlinux dbs]$ lsnrctl status TOPAS_GONTLINUX LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 19-NOV-2010 16:04:06 Copyright (c) 1991, 2007, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gontlinux.somedomain.com)(PORT=1526))) STATUS of the LISTENER ------------------------ Alias TOPAS_gontlinux Version TNSLSNR for Linux: Version 10.2.0.4.0 - Production Start Date 15-OCT-2010 12:24:53 Uptime 35 days 3 hr. 39 min. 12 sec Trace Level off Security ON: Local OS Authentication SNMP ON Listener Parameter File /u01/app/oracle/product/10.2.0/db_TOPAS/network/admin/listener.ora Listener Log File /u01/app/oracle/product/10.2.0/db_TOPAS/network/log/TOPAS_gontlinux.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=gontlinux.somedomain.com)(PORT=1526))) Services Summary... Service "TIPSY.somedomain.com" has 1 instance(s). Instance "TIPSY", status UNKNOWN, has 1 handler(s) for this service... Service "TOPAS.somedomain.com" has 1 instance(s). Instance "TOPAS", 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... The command completed successfully
Al ver que tenemos configurada la instancia TIPSY, vamos a agregarle la instancia TOPAS.
Nos loguemos a la base y consultamos el parametro local_listener.
SQL> sho parameter listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ local_listener string remote_listener string
Podemos observar que no tiene asignado ningún listener , en otras palabras no esta registrada la instancia con ningún listener.
Vamos a setear el nombre correspondiente y nos encontramos con el error ORA-00119.
Que podemos estar haciendo mal ?
SQL> alter system set local_listener=TOPAS_GONTLINUX scope=both; alter system set local_listener=TOPAS_gontlinux scope=both * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syntax error or unresolved network name 'TOPAS_gontlinux'
La realidad es que no puede resolver el nombre . Entonces debemos de configurar el tnsnames.ora
[oracle@gontlinux dbs]$ cd ../network/admin/ [oracle@gontlinux admin]$ vi tnsnames.ora
Editamos el archivo y agregamos la entrada.
CATRMAN = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = gontcontrol.somedomain.com)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = catrman) ) ) ### Cambio introducido por JAM. 19-NOV-10 TOPAS_gontlinux = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = gontlinux.somedomain.com)(PORT = 1526)) )
Salimos y guardamos los cambios.
Procedemos a registralo nuevamente con el seteo del parametro .
SQL> alter system set local_listener=TOPAS_GONTLINUX scope=both; System altered.
Se realizo exitosamente !!
Ahora ejecutemos un status y confirmemos el correcto registro de nuestra instancia.
[oracle@gontlinux admin]$ lsnrctl status TOPAS_GONTLINUX LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 19-NOV-2010 16:11:50 Copyright (c) 1991, 2007, Oracle. All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gontlinux.somedomain.com)(PORT=1526))) STATUS of the LISTENER ------------------------ Alias TOPAS_gontlinux Version TNSLSNR for Linux: Version 10.2.0.4.0 - Production Start Date 15-OCT-2010 12:24:53 Uptime 35 days 3 hr. 46 min. 56 sec Trace Level off Security ON: Local OS Authentication SNMP ON Listener Parameter File /u01/app/oracle/product/10.2.0/db_TOPAS/network/admin/listener.ora Listener Log File /u01/app/oracle/product/10.2.0/db_TOPAS/network/log/TOPAS_gontlinux.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=gontlinux.somedomain.com)(PORT=1526))) Services Summary... Service "TSTVOLTXDB" has 1 instance(s). Instance "TOPAS", status READY, has 1 handler(s) for this service... Service "TIPSY.somedomain.com" has 1 instance(s). Instance "TIPSY", status UNKNOWN, has 1 handler(s) for this service... Service "TOPAS" has 1 instance(s). Instance "TOPAS", status READY, has 1 handler(s) for this service... Service "TOPAS.somedomain.com" has 2 instance(s). Instance "TOPAS", status UNKNOWN, has 1 handler(s) for this service... Instance "TOPAS", status READY, has 1 handler(s) for this service... Service "TOPAS_XPT" has 1 instance(s). Instance "TOPAS", status READY, has 1 handler(s) for this service... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
Esto nos evitara ter um dor de cabeça !! Ate logo !
“Podemos observar que no tiene asignado ningún listener , en otras palabras no esta registrada la instancia con ningún listener.”
No es del todo cierto.
Según documentación, el valor por defecto es :
Default value: (ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=1521)) where hostname is the network name of the local host.
PMON siempre intenta registrar el listener, pero con esa configuración (y por lo tanto con el nombre por defecto)
Si queremos usar un listener con nombre o puerto por diferente, habrá que hacer lo que comentas (meterlo en el tnsnames para que pueda resolverlo y obtener de ahí la configuracion, o ponerla directamente en el valor del parámetro:
alter system set local_listener=(ADDRESS = (PROTOCOL = TCP)(HOST = gontlinux.somedomain.com)(PORT = 1526));
Personalmente prefiero esta última opción en lugar de estar inflando e inflando el tnsnames y que todo dependa de un fichero de texto abierto.
Saludos.
LikeLike