【问题标题】:ORA-00119: invalid specification ORA-00132: syntax errorORA-00119: 无效规范 ORA-00132: 语法错误
【发布时间】:2015-04-30 05:16:43
【问题描述】:

以下是我的 SQLPLUS 启动、LSNRCTRL SERVICES、LSNRCTRL STATUS 和 TNSPING 的输出。还包括我的 LISTENER.ORA 文件、TNSNAMES.ORA 和我的 PFILE。

从 SQLPLUS 启动输出中可以看到,数据库不会启动,因为 init.ora 文件 local_listener 设置为 LISTENER 并且它说它无法解析该名称。但是 LSNCTRL 状态显示 LISTENER 的名称是 LISTENER,所以我不确定 LSNCTRL 实用程序如何看到 LISTENER 而 SQLPLUS 不能。我的猜测是我遗漏了一些东西,我确信它是显而易见的和简单的。任何帮助将不胜感激!

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'

================================================================================

【问题讨论】:

    标签: oracle listener oracle12c


    【解决方案1】:
     (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 - 您的 ORACLE_HOME 环境变量设置不正确。您有多个 ORACLE_HOME,一个指向 11.2.0,另一个指向 12.1.0

    • LOCAL LISTENER - 更重要的是,正确设置 LOCAL LISTENER。

    • STATIC 注册 - 另一件事,为什么要使用 STATIC 监听器注册?删除 SID_LIST_LISTENER。它使用静态注册,这就是您将 STATUS 视为 UNKNOWN 服务的原因。让它动态注册。

    • PLUGGABLE DATABASE - 如果您使用的是12c,并且如果您已将其创建为 PLUGGABLE DATABASE,那么您必须在 tnsnames.ora 文件。否则,默认情况下,当您执行 SQLPLUS / AS SYSDBA 时,您会连接到 CDB

    请阅读Oracle 12c Post Installation Mandatory Steps

    【讨论】:

      【解决方案2】:

      您的初始化参数正在寻找别名LISTENER;并且您已经证明它存在于您的 listener.ora 中,但数据库不会查看该文件 - 它甚至可能无法读取它。

      如果您指定别名,则它必须存在于 tnsnames.ora 文件中,因此向该文件添加匹配的相同条目:

      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
          )
        )
      

      或者将你的初始化参数设置为连接字符串而不是别名,所以它不需要引用tnsnames.ora

      *.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))'
      

      【讨论】:

      • 将下面的行添加到我的 SPFILE 似乎可以解决问题。在进行更改并启动实例后,我从 spfile 创建了一个 pfile。 *.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))'
      【解决方案3】:

      尝试以下程序。它对我有用。

      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>
      

      【讨论】:

      • 优秀的解决方案。这正是我的问题。感谢您的详细解释(如果我没有创建它,不明白为什么存在 local_listener 参数......并且名称与 listener.ora 中的名称不同)
      • 感谢这个解决方案真的很有帮助。
      【解决方案4】:

      遇到了类似的问题。就我而言,它是通过更改主机名来解决的。

      发现local_listener变量是根据随机启动的主机名在某处计算的,所以值不正确。

      将其更改为 /etc/sysconfig/network 并将其设置为 hostname myshost.mydomain。没有编辑 /etc/hosts 因为我已经设置了 dns,但否则可能是必要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-02
        • 2011-01-21
        • 2021-03-05
        • 2012-03-16
        • 1970-01-01
        • 1970-01-01
        • 2020-08-23
        相关资源
        最近更新 更多