Recently I have seen cases where customers have defined multiple listeners in the $TNS_ADMIN/listener.ora file, but nontheless have started only the default listener called "LISTENER".
Unless you actually start the separate listeners, they will not do you any good. Each listener must be configured to listen to different ports and then started explicitly, as follows:
If desirable to run separate listeners, configure your listener.ora as follows:
SID_LIST_LISTENER_PRODDB01 =
(SID_LIST =
(SID_DESC =
(SID_NAME = PRODDB01)
(ORACLE_HOME = /u01/oracle/product/11202)
)
)
LISTENER_PRODDB01 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT =1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER_PRODDB02 =
(SID_LIST =
(SID_DESC =
(SID_NAME = PRODDB02)
(ORACLE_HOME = /u01/oracle/product/11202)
)
)
LISTENER_PRODDB02 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT=1526))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
)
)
Then start each listener:
LSNRCTL> set current_listener LISTENER_PRODDB01
Current Listener is LISTENER_PRODDB01
LSNRCTL> start
LSNRCTL> set current_listener LISTENER_PRODDB02
Current Listener is LISTENER_PRODDB01
LSNRCTL> start
After having started all LISTENERS, check that they are running (on unix):
ps -ef | grep LISTEN|grep -v grep
oracle 7864350 1 0 15:41:47 - 0:12 /u01/oracle/product/11203/bin/tnslsnr LISTENER_PRODDB01 -inherit
oracle 7864350 1 0 15:41:47 - 0:12 /u01/oracle/product/11203/bin/tnslsnr LISTENER_PRODDB02 -inherit
If you only specify one - 1 - listener per server, you can set it up to listen for incoming Connections for multiple databases, as specified in the SID_LIST:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME =PRODDB01)
(ORACLE_HOME = /u01/oracle/product/11202)
)
(SID_DESC =
(SID_NAME =PRODDB02)
(ORACLE_HOME = /u01/oracle/product/11202)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
I prefer using a $TNS_ADMIN/listener.ora file consequently. It makes it easier to configure the listener later.
I recommomed the following lines to be added to 11gR2 listeners:
DIAG_ADR_ENABLED=on <-- Use the ADR as base for all future logging and tracing of the listener
ADR_BASE_LISTENER = /u01/oracle <-- The value of Your $ORACLE_BASE variable goes here
LOGGING_LISTENER=off <-- Turn logging on only if needed
TRACE_LEVEL_LISTENER=off <-- Turn tracing on only if needed