无法连接ORA-12514:TNS:侦听程序当前不知道连接描述符中所请求的服务。
无法连接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
当你遇到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社区主题所述。