无法连接ORA-12514:TNS:侦听程序当前不知道连接描述符中所请求的服务。

16 浏览
0 Comments

无法连接ORA-12514:TNS:侦听程序当前不知道连接描述符中所请求的服务。

我想将我的PLSQL开发工具连接到数据库,但由于下面的错误无法连接。

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

请检查下面的配置。如何配置以使其正常工作?

SQL> select value from v$parameter where name='service_names';
VALUE
orcl
SQL> select instance from v$thread;
INSTANCE
orcl
SQL> select host_name,instance_name,version from v$instance;
HOST_NAME
INSTANCE_NAME    VERSION
ex-cs-b
orcl             11.2.0.1.0
SQL> select global_name from global_name;
GLOBAL_NAME
ORCL
SQL>
lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-OCT-2017 16:49:51
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
侦听程序的状态
------------------------
别名                     LISTENER
版本                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
启动日期                23-OCT-2017 16:49:40
运行时间                    0 days 0 hr. 0 min. 10 sec
跟踪级别               off
安全                  ON:本地OS身份验证
SNMP                      OFF
侦听程序参数文件   /app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
侦听程序日志文件         /app/oracle/diag/tnslsnr/ex-cs-b/listener/alert/log.xml
监听端点摘要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ex-cs-b)(PORT=1521)))
该侦听程序不支持任何服务
命令成功完成
lsnrctl services
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-OCT-2017 16:58:18
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
该侦听程序不支持任何服务
命令成功完成
more tnsnames.ora
# tnsnames.ora网络配置文件:/app/oracle/product/11.2.0/dbhome_1/network
/admin/tnsnames.ora
# 由Oracle配置工具生成。
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ex-cs-b)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
more listener.ora
# listener.ora网络配置文件:/app/oracle/product/11.2.0/dbhome_1/network
/admin/listener.ora
# 由Oracle配置工具生成。
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = ex-cs-b)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = /app/oracle

0
0 Comments

当你遇到ORA-12514错误时,可能是因为你的数据库没有在监听器中进行注册。通过运行lsnrctl status命令,你可以看到监听器的状态是"The listener supports no services",同时你的listener.ora文件中没有SID_LIST。

为了解决这个问题,你需要以SYSDBA身份连接到数据库实例,并运行以下命令:

 ALTER SYSTEM SET LOCAL_LISTENER='';

如果这不能解决你的问题,那么很可能是你有多个监听器,你需要按照注册过程来配置你想要的监听器。

值得注意的是,根据你启动实例的方式,你可能需要在ALTER SYSTEM命令中指定SCOPE,否则你的配置将在实例重启时消失。

在监听器.ora文件中添加SID列表尝试解决问题,但是出现了以下错误:

lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-OCT-2017 16:47:49
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 2: No such file or directory
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ex-cs-b)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused

在你运行这些命令时,监听器是否运行?可以尝试运行lsnrctl start来启动监听器,如这个Oracle社区主题所述。

0