ORA-12514:TNS:监听程序当前无法识别连接描述符中请求

1. 首先查看tnsnames.ora,路径如下:

oracle安装目录\product\10.2.0\db_1\NETWORK\ADMIN\。看其中是否包含了你的连接描述符中的服务,也就是你请求的服务。如果没有,则可以手动添加,比如:

service_ex =

(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = service_ex)

    )

)

可以参照tnsnames.ora中已有的服务描述。

2. 再检查listener.ora,该文件与tnsnames.ora位于相同目录下。监听器启动时会读取这个文件,使用其中的信息来识别连接请求中的服务。所以出现ORA-12514错误时,大部分是因为这个文件有问题引起的。在这个文件中,我们要查看其中的服务名是否与tnsnames.ora中的服务名一致。如果不一致,则可以手动修改,就上面的例子来说,修改前的listener.ora可能是:

LISTENER =

(DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))

)

从上面的例子中可以看出,这个LISTENER中没有包含于tnsnames.ora对应的服务名,因此我们可以做如下的修改:

LISTENER =

(DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))

    (CONNECT_DATA =

      (SERVICE_NAME = service_ex)

    )

)

完成修改后,重新启动监听服务,问题基本上都可以得到解决。

3. 如果还是出现同样的错误,也不用着急。Oracle的监听程序要比数据库服务启动的晚,当数据库服务启动之后,会修改listener.ora,把服务名写进listener.ora中,然后监听服务启动时读这个文件。但是在计算机启动时,有可能出现数据库服务还没有来得及修改listener.ora,监听服务就已经启来了。为了解决这个问题,我们可以把数据库服务跟监听器服务都设为手动启动,先启动数据库服务,然后再启动监听器服务。

4.     除了上述情况外,出现TNS错误时,有可能是因为没有加载数据库实例,加载方法如下:

在SQL/PLUS中输入startup force,强制加载数据库实例。

5.    总结:

ORA-12514错误引起的原因和解决办法基本就是这样,碰到问题时,实际情况实际分析,通过上面介绍的几种方法,多尝试几次,就可以解决了。

你可能感兴趣的:(oracle,sql)