Oracle. "Listener supports no services" message? Use LOCAL_LISTENER.

Can’t get your listener to take a static registration, or make a dynamic registration with “alter system register;”?
A “lsnrctl status” shows message:

Listener supports no services

Set LOCAL_LISTENER to explicitly tell the listener what to listen for.  This can be necessary for at least a couple of reasons, like a non-default port (anything but 1521) and in my case today – a Client has a VIP address that the listener would not recognize.
alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = ggvip.localdomain)(PORT = 1521))’ scope=both;
You can actually just put a listener name in for LOCAL_LISTENER too, to do that you must have a local tnsnames.ora file and then you can use that alias:

# an entry in my db servers tnsnames.ora
GGTARGET =
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = o68-122db.localdomain)(PORT = 1521))
 (CONNECT_DATA =
 (SERVER = DEDICATED)
 (SID = GGTARGET)
 (UR=A)
 )
 )

Now I can just use that tnsnames alias in my LOCAL_LISTENER parameter as follows:

alter system set LOCAL_LISTENER='GGTARGET' scope=both;

If the tnsname alias does not exist you’ll get an error if you try to use that syntax.
By the way, dynamic registration LREG (12c) or PMON (pre-12c) wakes up every minute or so to register everything it can automatically but, if you don’t want to wait and you want to force a DB to be registered then:

sqlplus / as sysdba
alter system register;
Scroll to Top