早上同事用PL/SQL链接虚拟机中的Oracle数据库,发现又报了“ORA-12514 TNS 监听程序当前没法识别链接描述符中请求服务”错误,帮其解决后,发现不少人遇到过这样的问题,所以写着这里。html
也许你没有遇到过,缘由以下:数据库
你oracle安装成功后,一直未中止数据库(即数据库是启动的),客户端配置成功后,应该一直不会有什么问题。服务器
而一旦你和我同事同样,有时把Oracle安装在虚拟机中,并且Oracle安装完毕后,没在进行任何监听的配置,则虚拟机再启动,则就会出现ORA-12514的问题。以下图oracle
以下是解决思路:url
根据出错信息判断出客户端未监听到实例服务名spa
一、经过重启服务的方式启动数据库,再次链接仍没法链接服务器。htm
二、既然第一种方法不能解决问题,那就第二种方法。考虑监听listener.orablog
监听配置文件listener.ora中能够没必要指定监听的服务名(安装Oracle10g后也是没有指定的)。正常状况下通常只要数据库启动,客户端链接数据库也没有什么问题,可是有时重复启动关闭也会出现ORA-12514错误。get
既然listener.ora中没有指定监听,咱们能够在listener.ora文件中指定监听的实例名,这样该问题应该能够链接。虚拟机
步骤以下:
# listener.ora Network Configuration File: E:\Oracle10g\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:\Oracle10g)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = E:\Oracle10g)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = onest)(PORT = 1521))
)
)
标红的为我添加的部分,ORCL为监听的实例名。
而有些朋友在配置客户端时,链接数据库成功,而使用PL/SQL时,又出现了以下图所示的问题。这又如何解决呢?为何oracle客户端已经链接成功了,而PL/SQL确不行呢?
出现如上的缘由是,多是你们再配置oracle客户端时,虽然连接成功了,步骤上可能有些错误。你们使用Net Cofiguration Assistant客户端时从新配置了Orcl,而不是添加,咱们应该以下步骤处理,就不会出问题了。
一、若是Net Cofiguration Assistant中已经有了Orcl。咱们能够从新配置
二、若是Net Cofiguration Assistant中没有Orcl,咱们应该添加 具体界面以下图所示。
若是你们该步处理也没有问题了,listener.ora 修改为功,而且从新启动了oracle服务器,不管oracle客户端仍是PL/SQL都可以成功链接数据库了。
总结一下。当你们遇到“ORA-12514 TNS 监听程序当前没法识别链接描述符中请求服务”错误的解决步骤:
一、经过重启服务的方式启动数据库,再次链接尝试。
二、若是第一种方法不可行,咱们采用第二种方法
-------------------------------------------------
在服务端的Net Manager中添加对本机名称的监听,而后重启服务器。