ORA-12514,TNS:侦听器当前不知道连接描述符中请求的服务

问题描述 投票:0回答:1

我的问题始于一个空闲实例。我正在尝试使用 SQL Developer 连接到我的本地 XE 实例。

我已经在 Google 上尝试了许多链接,如果您提供一些解决方案,我可能可以很容易地告诉您我尝试了这些链接,但仍然期待解决它。

附加信息:

  1. SQL Developer 中的所有其他 conn 字符串都工作正常。
  2. 尝试使用 /nolog 等重新启动数据库......
  3. 尝试改变系统....
  4. 我可以使用 sys 权限正确连接到 orcl(我的本地 sid 名称),唯一的问题是 Oracle 附带的虚拟用户 HR。
  5. 我可以解决原来的空闲实例问题
  6. 使用裸字符串连接 SQL*Plus : 描述 ... 给了我错误

    Error 6 initializing SQL*Plus  
    SP2-0667: Message file sp1<lang>.msb not found  
    SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
    
  7. 我的 Oracle 主目录是“C: pp\product .2.0\dbhome_1\NETWORK\ADMIN”

附件是listener.ora(第一行已注释,但当我放入#时,它变成粗体,所以请考虑它已注释):

#ADR_BASE_LISTENER = C:\app\387759

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\387759\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\387759\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
    (SID_DESC =
      (GLOBAL_DBNAME = XE)
      (ORACLE_HOME = C:\app\387759\product\11.2.0\dbhome_1)
      (SID_NAME = ORCL)
    )
  )

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

ADR_BASE_LISTENER = C:\app\387759\product\11.2.0\dbhome_1\log

现在 cmd(作为管理员)的错误是:

ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified

tnsnames.ora 中的相关条目(除了其他工作条目之外)还有:

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.36.160.158)
    )
  )

另外,请考虑我可以解决空闲实例问题,因此不再存在。

387759 is my username to the machine. 

其他信息,我在修复空闲实例问题时所做的唯一更改,即删除该行

*.local_listener='LISTENER_ORCL'

来自 InitORCL.ora 文件,然后再次从 pfile 创建 spfile,但刚才我再次将其添加到 pfile,然后创建 spfile。

Cmd 行开始给我错误:

SQL> startup    
ORA-00119: invalid specification for system parameter LOCAL_LISTENER    
ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'    
SQL>

所以理论上我又回到了无法启动oracle实例的问题。

无法在提到的位置(在评论中)找到pfile后,我尝试使用命令

显示参数spfile;

我收到以下信息:

SQL> 显示参数spfile; ORA-01034: ORACLE 不可用
进程ID:0
会话 ID:0 序列号:0

一个附加信息,我只能看到 services.msc 下运行的服务中的 2 个

OracleOraDb11g_home1TNSListener
Oracle服务ORCL

当我需要使用本地oracle时,我手动启动它们,否则我将它们保持未启动模式以节省一些RAM。其他与 Oracle 相关的服务我几乎一直保持关闭状态,并且在此时出现错误。这是否有助于缩小问题范围

`

oracle listener
1个回答
0
投票

您的 ORACLE_HOME 应该是

C:\app\387759\product\11.2.0\dbhome_1
。您的 TNS_ADMIN 应该是
C:\app\387759\product\11.2.0\dbhome_1\NETWORK\ADMIN
- 该目录包含您的listener.ora、sqlnet.ora、tnsnames.ora 等。

如果您可以以 SYS 身份在本地连接(例如

sqlplus / as sysdba
),但它表示您已连接到空闲实例,则数据库未运行。您需要启动数据库,并且由于您使用的是 Windows,因此还需要启动 OracleXE 服务。

当数据库启动时,它将尝试向侦听器注册其服务名称。默认情况下它将尝试使用服务器的网络名称。您的侦听器仅在本地主机上侦听,因此可能不匹配。看起来您试图告诉它针对该地址进行注册,但添加了单引号;应该是:

*.local_listener=LISTENER_ORCL

修复后,您的数据库应该启动并注册监听器,然后您应该能够从同一台机器进行连接,例如与:

sqlplus userid/password@orcl

sqlplus userid/password@//localhost:1521/orcl.36.160.158

...如果您的

tnsnames.ora
中的服务名称正确。 SQL Developer 中应该可以使用相同的值。不过,您将无法从其他任何地方进行连接,因为侦听器在本地主机上侦听。

© www.soinside.com 2019 - 2024. All rights reserved.