淘先锋技术网

首页 1 2 3 4 5 6 7

Oracle是业界最知名的数据库系统之一,受到众多企业和个人的青睐。但在使用过程中,却经常会遇到各种各样的错误。而其中,12514错误是一种比较常见的错误,也是相对比较棘手的问题。

12514错误一般是由于客户端无法连接到监听器造成的,而其原因可能有多种,例如监听器端口号或IP地址配置错误、监听器未启动或已停止运行、网络连接不通等。下面我们通过几个实际例子来具体分析这些可能的原因以及如何解决。

C:\> sqlplus test/test@orcl
ERROR:
ORA-12514: TNS:监听程序当前无法识别连接描述符所请求的服务

在这个例子中,我们在命令行中连接到一个Oracle实例时,却遇到了12514错误。这种情况一般是由于监听器未启动或已停止运行造成的。因此,要解决这个问题,我们需要先检查监听器的状态,确保其正在运行中。

lsnrctl status
LSNRCTL for 64-bit Windows: Version 12.2.0.1.0 - Production on 11-MAR-2017 14:48:46
Copyright (c) 1991, 2016, Oracle.  All rights reserved.
正在监听 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
服务名称 (“orcl”) 已经在监听器中注册
所侦听的程序版本:   (CMON) 12.2.0.1.0

上述代码片段展示了如何检查监听器状态。在这里,我们可以看到监听器正在监听IP地址为127.0.0.1,端口为1521的TCP连接,并且服务名称为"orcl"已经在监听器中注册。如果这些信息都正确无误,那么问题可能就不是在监听器上。

C:\> sqlplus test/test@orcl
ERROR:
ORA-12514: TNS:监听程序当前无法识别连接描述符所请求的服务

在这个例子中,我们依然是在命令行中进行连接,但是这一次我们使用的是一个不存在的服务名,因此,我们遇到了12514错误。要解决这个问题,我们需要首先确定我们所连接的服务名是否正确。

C:\> tnsping orcl
TNS Ping Utility for 64-bit Windows: Version 12.2.0.1.0 - Production on 11-MAR-2017 14:48:46
Copyright (c) 1991, 2016, Oracle.  All rights reserved.
正在尝试连接到 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
OK (10 毫秒)

上述代码片段展示了如何使用tnsping命令检查服务名是否正确。在这里,我们可以看到连接成功,并且CONNECT_DATA中的SERVICE_NAME确实为"orcl"。如果这些信息都正确无误,那么问题很可能就不是在服务名上。

总之,在遇到12514错误时,我们可以通过检查监听器状态、确认服务名等方式来逐渐确定问题所在。只要我们仔细分析、排查,很快就能解决这个问题。