El Oracle Net listener más conocido como listener, es el servicio que corre en el servidor donde estan las bases de datos Oracle y que se encarga de manejar todas la peticiones remotas de entrada a la base de datos.
Configuración y puesta en marcha del listener en un servidor de bases de datos Oracle.
Nos conectamos al servidor con el usuario oracle.
1 – Variable TNS_ADMIN.
Exportamos la variable de entorno a el path $ORACLE_HOME/network/admin.
$export TNS_NAMES=$ORACLE_HOME/network/admin
2 – El fichero de configuración listener.ora.
En el path $ORACLE_HOME/network/admin encontraremos el archivo listerner.ora, antes de editarlo con el vi para modificarlo vamos a analizar que datos necesitamos para crear una nueva entrada en el listener.ora, veamos una entrada ejemplo:
LSN_PRUEBA01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lce4s002v)(PORT = 1521))
)
SID_LIST_LSN_PRUEBA01 =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u01/app/oracle/product/10.2.0.1)
(SID_NAME = PRUEBA01)
)
)
Puntos clave de una entrada en el listener.ora
LSN_PRUEBA01, es el nombre o alias del servicio, debe de ser único y por claridad usaremos LSN (abreviatura de listener) y el nombre de la instancia/base de datos, no obstante podéis utlizar el nombre que queráis.
PROTOCOL, Oracle soporta diferentes protocolos, vamos a crear una entrada para TCP/IP.
HOST, nombre del servidor o maquina, el nombre del servidor tiene que estar presente en el /etc/hosts, también se puede usar la IP del servidor pero no lo recomiendo pues si la IP cambiara tendríais que modificar cada entrada.
PORT, puerto TCP, podemos utilizar cualquier puerto TCP que este libre pero es recomendable empezar por el 1521 ya que este es el puerto por defecto que recomienda Oracle.
ORACLE_HOME, el path del ORACLE_HOME en el que estemos trabajando.
SID_NAME, el nombre de la instancia de la base de datos para la que estemos preparando la condifuración.
Podemos utilizar un editor de textos (recomiendo PSPAD para Windows y vi para linux Unix) para realizar las modificaciones necesarias. Una vez tenemos preparada nuestra entrada la añadiremos al listener.ora.
Editamos el listener.ora y añadimos nuestra entrada al final y salimos guardando.
3 – Arranque del lisnener.
El comando para arrancar el listener es lsnrctl, si lo ejecutamos trabajaremos en modo interactivo.
Ejemplo:
$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 03-NOV-2010 10:15:19
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> help
The following operations are available
An asterisk (*) denotes a modifier or extended command:
start stop status
services version reload
save_config trace spawn
change_password quit exit
set* show*
Para arrancar un listener en concreto utilizaremos el comando lsnrctl seguido de start y del alias, en nuestro ejemplo LSN_PRUEBA01.
Ejemplo:
$ lsnrctl start LSN_PRUEBA01
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 03-NOV-2010 10:37:44
Copyright (c) 1991, 2007, Oracle Corporation. All rights reserved.
Starting /u01/app/product/10.2.0.1/bin/tnslsnr: please wait...
TNSLSNR for Solaris: Version 10.2.0.1.0 - Production
System parameter file is /u01/app/product/10.2.0.1/network/admin/listener.ora
Log messages written to /u01/app/product/10.2.0.1/network/log/lsn_qa.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PRUEBA01)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prueba001)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias PRUEBA01
Version TNSLSNR for Solaris: Version 10.2.0.1.0 - Production
Start Date 03-NOV-2010 10:37:44
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /u01/app/product/10.2.0.1/network/admin/listener.ora
Listener Log File /u01/app/product/10.2.0.1/network/log/lsn_qa.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=prueba001)(PORT=1521)))
Services Summary...
Service "PRUEBA01" has 1 instance(s).
Instance "PRUEBA01", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
4 – Parar un listener.
Para parar un listener usaremos el comando lsnrctl deguido de stop y por último el alias.
Ejemplo:
$ lsnrctl stop LSN_PRUEBA01
LSNRCTL for Solaris: Version 10.2.0.1.0 - Production on 03-NOV-2010 10:37:27
Copyright (c) 1991, 2007, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prueba001)(PORT=1521)))
The command completed successfully
5 - Para ver el estado de un listener.
$ lsnrctl status LSN_PRUEBA01
El resultado es el siguiente
$ lsnrctl status LSN_PRUEBA01
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 03-NOV-2010 10:39:26
Copyright (c) 1991, 2007, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prueba001)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LSN_PRUEBA01
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 03-NOV-2010 10:39:44
Uptime 0 days 0 hr. 0 min. 41 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /u01/app/product/10.2.0.1/network/admin/listener.ora
Listener Log File /u01/app/product/10.2.0.1/network/log/lsn_qa.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=prueba001)(PORT=1521)))
Services Summary...
Service "PRUEBA01" has 1 instance(s).
Instance "PRUEBA01", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Artículo relacionado - Comunaciones en Oracle conexiones cliente el tnsnames.ora