问题
Below are outputs from my SQLPLUS startup , LSNRCTRL SERVICES, LSNRCTRL STATUS and TNSPING. Also included are my LISTENER.ORA file, TNSNAMES.ORA and my PFILE.
As you can see from the SQLPLUS startup output the database will not startup because init.ora file local_listener is setup as LISTENER and it says its unable to resolve that name. However the LSNCTRL status shows the name of the LISTENER to be LISTENER, so I'm not sure how LSNCTRL utility is seeing the LISTENER and SQLPLUS can't. My guess, is I'm missing something and I'm sure its OBVIOUS and SIMPLE. Any help would be appreciated!
ORACLE_HOME=C:\app\product\12.1.0\dbhome_1
SQLPLUS STARTUP
================================================================================
sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Fri Feb 27 06:37:51 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER'
SQL>
================================================================================
LSNRCTL SERVICES
================================================================================
LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 27-FEB-2015 06:36:45
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "EDMP1" has 1 instance(s).
Instance "EDMP1", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:6 refused:0
LOCAL SERVER
The command completed successfully
================================================================================
LSNRCTL STATUS
================================================================================
LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 27-FEB-2015 06:36:59
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 12.1.0.2.0 - Production
Start Date 27-FEB-2015 06:07:14
Uptime 0 days 0 hr. 29 min. 49 sec
Trace Level support
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\app\product\12.1.0\dbhome_1\network\admin\listener.ora
Listener Log File C:\app\diag\tnslsnr\MWKS137477\listener\alert\log.xml
Listener Trace File C:\app\diag\tnslsnr\MWKS137477\listener\trace\ora_9096_8848.trc
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "EDMP1" has 1 instance(s).
Instance "EDMP1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
================================================================================
TNSPING
================================================================================
TNS Ping Utility for 64-bit Windows: Version 12.1.0.2.0 - Production on 27-FEB-2015 06:37:31
Copyright (c) 1997, 2014, Oracle. All rights reserved.
Used parameter files:
C:\app\product\12.1.0\dbhome_1\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = EDMP1)))
OK (10 msec)
================================================================================
LISTENER.ORA
================================================================================
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = EDMP1)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(SID_NAME = EDMP1)
)
)
================================================================================
TNSNAMES.ORA
================================================================================
EDMP1.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = EDMP1)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
================================================================================
PFILE.ORA
================================================================================
edmp1.__data_transfer_cache_size=0
edmp1.__db_cache_size=1795162112
edmp1.__java_pool_size=16777216
edmp1.__large_pool_size=33554432
edmp1.__oracle_base='C:\app'#ORACLE_BASE set from environment
edmp1.__pga_aggregate_target=855638016
edmp1.__sga_target=2533359616
edmp1.__shared_io_pool_size=117440512
edmp1.__shared_pool_size=553648128
edmp1.__streams_pool_size=0
*.audit_file_dest='C:\app\admin\EDMP1\adump'
*.audit_trail='db'
*.compatible='12.1.0.2.0'
*.control_files='C:\app\oradata\EDMP1\control01.ctl','C:\app\oradata\EDMP1\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='EDMP1'
*.diagnostic_dest='C:\app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=EDMP1XDB)'
*.local_listener='LISTENER'
*.open_cursors=300
*.pga_aggregate_target=804m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2413m
*.undo_tablespace='UNDOTBS1'
================================================================================
回答1:
Your initialisation parameter is looking for an alias LISTENER
; and you've shown that exists in your listener.ora
, but the database does not look at that file - it may not even be able to read it.
If you specify an alias then it has to exist in the tnsnames.ora
file, so add a matching same entry to that file:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
Or alternatively set your initialisation parameter to the connect string rather than an alias, so it doesn't need to refer to tnsnames.ora
:
*.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))'
回答2:
Try below procedure. It worked for me.
C:\Users\Hp>sqlplus SYSTEM as SYSDBA
SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 3 12:28:32 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter password:
Connected to an idle instance.
SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'
SQL> create pfile from spfile;
File created.
**************************
Now open the PFILE (INIT%ORACLE_SID%.ORA) from %ORACLE_HOME%\database
Search for string local_listener='LISTENER_ORCL' and remove it and save the file.
**************************
SQL> startup nomount pfile='C:\app\Hp\product\11.2.0\dbhome_1\database\INITorcl.ORA'
ORACLE instance started.
Total System Global Area 1686925312 bytes
Fixed Size 2176368 bytes
Variable Size 1291848336 bytes
Database Buffers 385875968 bytes
Redo Buffers 7024640 bytes
SQL> create spfile from pfile;
File created.
SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1686925312 bytes
Fixed Size 2176368 bytes
Variable Size 1291848336 bytes
Database Buffers 385875968 bytes
Redo Buffers 7024640 bytes
Database mounted.
Database opened.
SQL>
回答3:
(SID_DESC =
(GLOBAL_DBNAME = EDMP1)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(SID_NAME = EDMP1
C:\app\product\12.1.0\dbhome_1\network\admin\sqlnet.ora
C:\app\product\12.1.0\dbhome_1\network\admin\listener.ora
ORACLE_HOME - Your ORACLE_HOME environment variable is incorrectly set. You have multiple ORACLE_HOME(s), one is pointing to
11.2.0
and the other is pointing to12.1.0
.LOCAL LISTENER - More importantly, set the LOCAL LISTENER properly.
STATIC registration - Another thing, why do you use STATIC listener registration? Remove the
SID_LIST_LISTENER
. It uses static registration, and that's the reason that you seeSTATUS
asUNKNOWN
service. Let it register dynamically.PLUGGABLE DATABASE - If you are on
12c
, and if you have created it as PLUGGABLE DATABASE, then you must include the PDB details in thetnsnames.ora
file. Else, you would by default connect toCDB
when you doSQLPLUS / AS SYSDBA
.
Please read Oracle 12c Post Installation Mandatory Steps.
回答4:
Had a similar problem. In my case it was solved by changing hostname.
Found that local_listener
variable is calculated somewhere based on hostname which was initiated random, so the value incorrect.
Changed it in /etc/sysconfig/network
and set it with hostname myshost.mydomain
. Did not edit /etc/hosts
cause i already have dns set up, but otherwise it could be necessary.
来源:https://stackoverflow.com/questions/28765999/ora-00119-invalid-specification-ora-00132-syntax-error