A Few Points About Dynamic Registration

In a recent thread on OTN, the OP was having a difficult time understanding dynamic registration. They were confused about the interactions of settings in listener.ora, tnsnames.ora, and the local_listener parameter.  After responding to the thread with a summary, I thought it might be worth repeating here, along with a few more  references.  I actually covered all of these points in earlier articles, “Registering the Oracle Database With the Listener” and “Exploring the Local Listener Parameter“,  but sometimes a simply restating key points can help clarify things for some people.

In short, the summary of important points are as follows:

1) The listener itself doesn’t give a flying fig about what is in tnsnames.ora.  That file (tnsnames.ora) is used ONLY by client processes.  In the case of dynamic registration, the database IS the client process.

2) The listener is quite capable of starting with no listener.ora file at all.  In this case it will start with all default values, including the default name of LISTENER and default port of 1521. For most people, most of the time, this is sufficient.

3) If the local_listener parameter is not set (null) the database will send the registration request to port 1521.  Notice that 1521 is also the default port of of the listener.

4) If you choose to set local_listener, you can either use a full connect string ((ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1421))) or simply reference an entry in tnsnames.ora, to resolve to the address (server name and port) of the listener.

5) The SID_LIST section of listener.ora has nothing to do with dynamic registration.  Quite the opposite.  The SID_LIST section is how you implement static registration.

The original thread on OTN may be found here: “Oracle Net Service Configuration“.  In that thread, there was also a link to a very nice explanation by Martin Beach on his blog “Martin’s Blog”, “Little things worth knowing-static and dynamic listener registration

Please like us:


  1. // Reply

    a minor note:
    when restarting a listener, none of the databases which are using local_listener get registered automatically

    each database has to registered manually after the listener restarts

    1. // Reply

      Geert – I’m not sure if you are making a statement or asking “why”.

      When you first start the listener, of course the databases are not immediately registered. Just wait a few seconds, then check again. You have to give the databases time to cycle around and attempt to register. I’ve seen this take up to a minute, but normally within 10 to 15 seconds. If they still don’t register, then you have a mismatch between what LOCAL_LISTENER specifies and what the listener is expecting — most likely a host and or port specification. If you are having a particular problem, I’d be happy to help you work through it.

Leave a Reply

Your email address will not be published. Required fields are marked *