Exploring the LOCAL_LISTENER parameter.

The original version of the below article was created by Ed Stevens and could be find here.
In one of my previous post “Resolving Oracle networking problems – ORA-12514” I mentioned the role of the initialization parameter LOCAL_LISTENER in dynamic registration of the database instance to the listener. Now I’d like to deliver on my promise to explore that piece of the puzzle.

The LOCAL_LISTENER initialization parameter.
So we’ve seen that the listener is able to start up and successfully handle connection requests without a listener.ora configuration file. It does this by using all defaults (including the listener name and port) and the database instance is able to register itself with the listener.
How does the instance know how to contact the listener in order to register itself? It uses the initialization parameter LOCAL_LISTENER. From the Oracle Database Reference 11g Release 2 (11.2) we read:
LOCAL_LISTENER specifies a network name that resolves to an address or address list of Oracle Net local listeners
Let’s see what my instance says about that:

OK, so the instance is supposed to use LOCAL_LISTENER to locate the listener so that it (the instance) can register itself with the listener. But I don’t have LOCAL_LISTENER set to anything. Well, it so happens that LOCAL_LISTENER has a default value that dovetails nicely with the default settings of the listener. Again, from the Reference manual:
Default value: (ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=1521)) where hostname is the network name of the local host.
I’ve seldom found a good reason NOT to run the listener with anything other the default name and port, but some people insist, and that’s when we need to adjust LOCAL_LISTENER to match up.