How to spawn more Listeners

Very easy.

Suppose this is you current listener.ora

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lo9)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = PNPKEY))
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = c.fadalti.com)
(ORACLE_HOME = /opt/ora9/product/9.2)
(SID_NAME = c)
)
(SID_DESC =
(GLOBAL_DBNAME = p2.fadalti.com)
(ORACLE_HOME = /opt/ora9/product/9.2)
(SID_NAME = p2)
)
(SID_DESC =
(GLOBAL_DBNAME = p1.fadalti.com)
(ORACLE_HOME = /opt/ora9/product/9.2)
(SID_NAME = p1)
)
)

 

Now we want a new listener (in my case in the same machine) called LISTENER2, just add this few lines

LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lo9)(PORT = 1522))
)
)

SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = c.fadalti.com)
(ORACLE_HOME = /opt/ora9/product/9.2)
(SID_NAME = c)
)
(SID_DESC =
(GLOBAL_DBNAME = p2.fadalti.com)
(ORACLE_HOME = /opt/ora9/product/9.2)
(SID_NAME = p2)
)
(SID_DESC =
(GLOBAL_DBNAME = p1.fadalti.com)
(ORACLE_HOME = /opt/ora9/product/9.2)
(SID_NAME = p1)
)
)

Starting the listeners

LSNRCTL> set current_listener LISTENER

LSNRCTL> start

LSNRCTL> set current_listener LISTENER2

LSNRCTL> start

I recommend to always have a listener called LISTENER listening on port 1521, 
wich is the default configuration; otherwise you have to set the parameter LOCAL_LISTENER in the init.ora using the form
local_listener='(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.13) (PORT = 1521)))'