If you just want the solution, then read Database Startup Fails With ORA-00119 (Doc ID 471767.1)
From standby database, startup mount resulted in the following errors:
ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syntax error or unresolved network name 'LISTENER'
When setting local_listener, my preference is:
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521))' scope=spfile sid='*';
However, some implementations will use the following:
alter system set local_listener=LISTENER scope=spfile sid='*';
There are pros and cons to both.
When using LISTENER with tnsnames, modifications can be performed from tnsnames.ora without having to modify database parameters.
However, it’s not forgiving when there are misconfiguration.
Demo 1:
Modify local_listener and restart DB.
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521))' scope=spfile sid='*'; System altered. SQL> shu abort ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 1610612736 bytes Fixed Size 2924928 bytes Variable Size 520097408 bytes Database Buffers 1073741824 bytes Redo Buffers 13848576 bytes Database mounted. SQL> show parameter listener NAME TYPE VALUE ------------------------------------ ----------- --------------------------------------------- listener_networks string local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521)) remote_listener string SQL>
Demo 2:
Modify local_listener and restart DB failed. Modify sqlnet.ora.
### This is a bad omen and no changes should be made to DB until tnsping is resolved. [oracle@ol7-121-dg2 ~]$ tnsping LISTENER TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 05-APR-2020 04:32:05 Copyright (c) 1997, 2014, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/sqlnet.ora TNS-03505: Failed to resolve name [oracle@ol7-121-dg2 ~]$ ### Restart DB FAILED SQL> alter system set local_listener=LISTENER scope=spfile sid='*'; System altered. SQL> shu abort ORACLE instance shut down. SQL> startup mount ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syntax error or unresolved network name 'LISTENER' SQL>
That’s not good!
Check sqlnet.ora
[oracle@ol7-121-dg2 ~]$ cat /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/sqlnet.ora SQLNET.INBOUND_CONNECT_TIMEOUT=400 SQLNET.ENCRYPTION_SERVER=REQUIRED SQLNET.ENCRYPTION_TYPES_SERVER=(AES256) SQLNET.ENCRYPTION_CLIENT=REQUIRED SQLNET.ENCRYPTION_TYPES_CLIENT=(AES256) SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256) SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (SHA256) NAMES.DEFAULT_DOMAIN=world [oracle@ol7-121-dg2 ~]$ vi /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/sqlnet.ora [oracle@ol7-121-dg2 ~]$ cat /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/sqlnet.ora SQLNET.INBOUND_CONNECT_TIMEOUT=400 SQLNET.ENCRYPTION_SERVER=REQUIRED SQLNET.ENCRYPTION_TYPES_SERVER=(AES256) SQLNET.ENCRYPTION_CLIENT=REQUIRED SQLNET.ENCRYPTION_TYPES_CLIENT=(AES256) SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256) SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (SHA256) [oracle@ol7-121-dg2 ~]$
Did you see the problem? Not sure why NAMES.DEFAULT_DOMAIN=world was set and remove solved the issue.
SQL> startup mount ORACLE instance started. Total System Global Area 1610612736 bytes Fixed Size 2924928 bytes Variable Size 520097408 bytes Database Buffers 1073741824 bytes Redo Buffers 13848576 bytes Database mounted. SQL> show parameter listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ listener_networks string local_listener string LISTENER remote_listener string SQL>
Demo 3:
Rollback sqlnet.ora, modify tnsnames.ora, and restart DB.
[oracle@ol7-121-dg2 ~]$ cat /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/sqlnet.ora SQLNET.INBOUND_CONNECT_TIMEOUT=400 SQLNET.ENCRYPTION_SERVER=REQUIRED SQLNET.ENCRYPTION_TYPES_SERVER=(AES256) SQLNET.ENCRYPTION_CLIENT=REQUIRED SQLNET.ENCRYPTION_TYPES_CLIENT=(AES256) SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256) SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (SHA256) NAMES.DEFAULT_DOMAIN=world [oracle@ol7-121-dg2 ~]$ tnsping LISTENER TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 05-APR-2020 04:54:52 Copyright (c) 1997, 2014, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/sqlnet.ora TNS-03505: Failed to resolve name [oracle@ol7-121-dg2 ~]$ [oracle@ol7-121-dg2 ~]$ cat /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/tnsnames.ora LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-121-dg2.localdomain)(PORT = 1521)) hawka.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-121-dg1.localdomain)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SID = hawk) ) ) hawkb.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-121-dg2.localdomain)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SID = hawk) ) ) [oracle@ol7-121-dg2 ~]$ vi /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/tnsnames.ora [oracle@ol7-121-dg2 ~]$ tnsping LISTENER TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 05-APR-2020 05:04:18 Copyright (c) 1997, 2014, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-121-dg2.localdomain)(PORT = 1521)) OK (0 msec) [oracle@ol7-121-dg2 ~]$ SQL> shu abort ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 1610612736 bytes Fixed Size 2924928 bytes Variable Size 520097408 bytes Database Buffers 1073741824 bytes Redo Buffers 13848576 bytes Database mounted. SQL> show parameter listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ listener_networks string local_listener string LISTENER remote_listener string SQL>
As demonstrated, having more options is not always good as it can lead to more likelihood for errors. Chose your evil wisely.