One of the most overlooked yet vital aspects of Oracle Database networking is the LOCAL_LISTENER parameter.
This setting ensures that your database instance correctly registers with the Oracle listener — enabling smooth communication between clients and the database.
In this post, we’ll walk you through what LOCAL_LISTENER does, why it’s needed, and how to set it correctly using both SQL*Plus and Oracle Enterprise Manager.
You’ll also learn the common pitfalls and troubleshooting methods that every DBA should know.

What Is the LOCAL_LISTENER Parameter?
In Oracle, the LOCAL_LISTENER parameter specifies the Oracle Net listener that an instance should use to register itself.
When a database starts, it dynamically registers with the listener so clients can connect.
However, in certain configurations — like multitenant setups, RAC environments, or custom ports — Oracle may not automatically detect the listener.
That’s where the LOCAL_LISTENER parameter becomes essential.
In simple terms:
LOCAL_LISTENERtells Oracle which listener (host and port) to use for local registration.
Why Setting LOCAL_LISTENER Is Important
Setting this parameter ensures:
- Dynamic service registration with the correct listener.
- Client connections work even after IP, port, or hostname changes.
- Multiple listeners (for high availability) can be managed easily.
- Custom ports or IP bindings are recognized during startup.
- RAC instances register properly with individual node listeners.
Without a properly set LOCAL_LISTENER, you might face:
- ORA-12514 (“listener does not currently know of service requested”)
- ORA-12541 (“no listener”)
- Instances not visible in
lsnrctl statusoutput.
Step 1: Verify Your Listener Configuration
Before setting the parameter, confirm your listener is running and check its address details.
$ lsnrctl status
You’ll see something like:
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oradb.localdomain)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Take note of the HOST and PORT — you’ll need them for LOCAL_LISTENER.
Step 2: Update TNSNAMES.ORA File
Create or verify an entry for your listener in $ORACLE_HOME/network/admin/tnsnames.ora.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradb.localdomain)(PORT = 1521))
This defines the TNS alias you’ll reference in your LOCAL_LISTENER parameter.
Step 3: Set LOCAL_LISTENER Dynamically
You can set LOCAL_LISTENER while the instance is running using SQL*Plus:
SQL> ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_ORCL' SCOPE=BOTH;
Explanation:
SCOPE=BOTHupdates both the SPFILE (persistent) and memory (current instance).'LISTENER_ORCL'refers to the alias defined in your TNSNAMES file.
Step 4: Verify the Parameter Value
Check whether the parameter has been applied correctly:
SQL> SHOW PARAMETER LOCAL_LISTENER;
NAME TYPE VALUE
---------------- ----------- -----------------
local_listener string LISTENER_ORCL
If the value shows up, Oracle will use this listener for registration.
Step 5: Force Service Registration
After setting the parameter, prompt the database to register immediately:
SQL> ALTER SYSTEM REGISTER;
Then check listener status again:
$ lsnrctl status
You should now see your service listed under the correct instance.
Step 6: Use Full Descriptor (Optional)
If you prefer to avoid TNS alias resolution, you can directly assign a full descriptor:
SQL> ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=oradb.localdomain)(PORT=1521))' SCOPE=BOTH;
This approach is helpful when your Oracle client can’t resolve TNS entries or if tnsnames.ora is not configured.
Step 7: Modify SPFILE Manually (if needed)
For SPFILE-based databases, you can also update the parameter permanently:
SQL> CREATE PFILE='/tmp/init.ora' FROM SPFILE;
-- Edit the PFILE to include:
-- *.local_listener='LISTENER_ORCL'
SQL> CREATE SPFILE FROM PFILE='/tmp/init.ora';
SQL> STARTUP;
Step 8: Example for RAC or Multitenant Environments
In RAC or CDB/PDB configurations, each instance or container may have its own listener.
For example:
ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_ORCL1' SID='ORCL1' SCOPE=BOTH;
ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_ORCL2' SID='ORCL2' SCOPE=BOTH;
Each node in the cluster registers independently with its respective listener.
To learn how to set up a dedicated network for redo traffic and enhance performance, check out our detailed guide ondedicated log shipping networks in Oracle Data Guard.This complements your listener configuration by improving the reliability and speed of Data Guard communication.
Troubleshooting Common Issues
❌ ORA-12514: Listener does not know of service requested
- Check if the listener is running.
- Run
ALTER SYSTEM REGISTERto refresh. - Confirm the
SERVICE_NAMEmatches intnsnames.oraandlistener.ora.
❌ ORA-12541: No listener
- Verify that
lsnrctl starthas been executed. - Ensure correct
HOSTandPORTin your configuration.
❌ Still not registering?
- Ensure that
LOCAL_LISTENERmatches exactly with TNS alias names. - For container databases, restart the listener after setting the parameter.
Pro Tip: Check Registration Log in Alert Log
To confirm the registration worked, open the database alert log:
tail -f $ORACLE_BASE/diag/rdbms/orcl/orcl/trace/alert_orcl.log
You should see a message like:
Service "orcl" registered with listener (address=(protocol=tcp)(host=oradb.localdomain)(port=1521))
This confirms successful listener registration.
Verify Registration with SQL
You can also check registered services directly from SQL:
SELECT network_name, instance_name, status
FROM gv$service;
If your instance appears and status = READY, registration succeeded.
Summary: Quick Commands Checklist
| Task | Command |
|---|---|
| Check current listener | lsnrctl status |
| Set LOCAL_LISTENER | ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_ORCL' SCOPE=BOTH; |
| Verify parameter | SHOW PARAMETER LOCAL_LISTENER; |
| Force registration | ALTER SYSTEM REGISTER; |
| Full descriptor | (ADDRESS=(PROTOCOL=TCP)(HOST=oradb.localdomain)(PORT=1521)) |
Conclusion
Setting the LOCAL_LISTENER parameter correctly ensures that your Oracle database instance registers with the right listener, enabling reliable client connections and reducing network errors.
Whether you’re working on a standalone setup or a complex RAC environment, remember:
- Always verify listener status and ports first.
- Use
SCOPE=BOTHfor persistence. - Force registration after any change.
With these steps, you’ll eliminate ORA-12514 headaches and maintain a stable Oracle networking configuration.




