ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

下午,正在划水,老大一个电话过来,远程的应用怎么不行了?服务器宕机了?你看看啥原因。

首先,v*n连接远程堡垒机,可以接入服务器(并没有宕机),打开应用,没有问题。查找日志,发现一堆数据库连接失败的错误代码。直接通过PLSQL登陆,结果发现数据库已经登不上了,报以下错误:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

以下是解决方案:

1,尝试重启数据库监听服务;(大部分情况没用)

2,找到tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\NETWORK\ADMIN;(看你安装情况确定)

ORA-12514: TNS:listener does not currently know of service requested in connect descriptorORA-12514: TNS:listener does not currently know of service requested in connect descriptor

HOST后面可以跟具体IP地址也可以直接跟自己本机名称。如果ip不对改正。(正常情况改过一次不会出现问题了,除非有小可爱偷偷改了)

3,检查确认数据库实例是否启动了;(select status from v$instance)

4,检查网络是否正常,ping的通么?telnet行么?tnsping正常么?(我是本机肯定没问题)

5,打开监听文件listener.ora,路径一般和tnsnames一样;(这也没问题啊!)

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

扩展:

LISTENER部分包含协议地址列表,每个实例一个入口
SID_LIST_LISTENER部分标识全局数据库名称、标识监听程序正在服务的每个实例的Oracle软件主目录以及实例或SID。
SID_LIST描述用于静态数据库注册、保持和以前的版本兼容性以及供Oracle Enterprise Manager使用。

7,查看sqlnet.ora 文件,sqlnet.ora 文件的存放路径一样在network/admin中(这个文件用于配置网络连接时所使用的连接方式等,到这儿我已经开始抓狂了):

NAMES.DEFAULT_DOMAIN = localdomain
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

扩展:

NAMES.DEFAULT_DOMAIN 指定网络域名 ;

NAMES.DIRECTORY_PATH  指定当解析客户端连接标识符时命名方法 ;

具体解释,传送门:https://www.cnblogs.com/mengxiaohu/p/7727954.html

8,求助大佬,传送门:https://www.cnblogs.com/kerrycode/p/6698791.html (提供了一个思路,监听文件里面如果host用的是本机的name 那么最好看一下etc/hosts里面的配置是否还是本机的ip地址,但是我这本机没动过啊!所以还是没搞定)

9,就在我苦苦找寻解决思路的同时,瞥了一眼应用。这家伙居然又连上了!(噗!心中郁闷可想而知)