访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/89513494

 

安装oracle数据库服务端后,先打开Oracle Net Manager,找到我们安装的数据库的名字,即安装数据库时提示输入的Oracle服务标识符:orcl。

选中后点击测试,点更改登录,输入我们设置的可用的账户和密码,本例使用的是在安装数据库后自己设定的scott账户及密码。确定后执行测试,如果显示连接测试成功,恭喜可以进行下一步,如果没有成功,请参阅以下可能的原因。

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第1张图片

可能原因1:主机名用的不是ip,而是类似于:clint.admin这种。如果坚持设置这种形式而不是ip,那么请设置hosts文件做个指引吧,这个方法本人未测试,不确保确实可用。考虑到便捷性,我选用ip的形式。

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第2张图片

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第3张图片

可能原因2:监听和服务名两处的协议、主机和端口不一致。这两处的主机名和端口号需要保证一致,即上面两个图所示的地方。协议和端口号建议使用默认值,即上图所示,主机则选择Oracle服务端所在机器的ip。附注:安装oracle服务端的机器的ip先设为固定的。如果主机ip变化,则这两处ip也做相应的改动。

可能原因3:需要连接的数据库服务没有被监听。看下文的查询监听状态。如果某个实例没有被监听,则只能本地使用,即不能sqlplus Scott/[email protected]/orcl,但可以sqlplus Scott/tiger。

可能原因4:用于测试的账户密码不对,如果验证是这个问题呢?测试的时候会有相应的提示,我们也可以通过cmd执行sqlplus Scott/tiger验证这个scott的账户密码是否可用。

(先列举这几个问题,后面如果有新情况再补充)

在Oracle Net Manager测试成功了,说明服务器端的这个orcl可以提供使用了,我们可以进行下一步分析了。

服务端被使用需要在监听下,就如同任何单位和个人的任何行为都要在法律的规定和人民群众的监督下进行。下面我们看看我们要用的orcl是否有在被监听。cmd中LSNRCTL命令,status查询监听状态:

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第4张图片

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第5张图片

实例:“orcl”状态READY,说明是在监听下,如果不在,使用Net Configuration Assistant重新配置下监听,如下图所示.

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第6张图片

有时候我们再net manager会修改服务名,这个时候配置过监听后,通过查看监听,发现监听中的服务名还是原来的服务名,登录的时候只有采用原来的服务名才可以登录。如:新建数据库的时候我设置的oracle服务名是orcl2019,实例是orcl,那么即使我在net manager中把实例orcl的服务名修改为orcl2020并保存,配置监听后,cmd查看监听状态,服务名依然是orcl2019而不是orcl2020。这个时候sqlplus Scott/[email protected]/orcl2020不成功,显示ORA-12514的错误,但sqlplus Scott/[email protected]/orcl2019是可以正常连接的。如果觉得不便,非要修改服务名,好吧,那就折腾下。参阅:https://blog.csdn.net/huronzhu/article/details/37047819

cmd打开,以sys用户dba权限登录。

sqlplus sys/sys as sysdba

然后可以执行下面的SQL语句来查询服务名。

 show parameter service_name

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第7张图片

改过后再重新配置下监听就ok了。

监听没问题了后再看下一个环节。

服务端试着以sqlplus 用户/密码@主机/实例来访问看。

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第8张图片

如果这里没有问题可以进行下一步,如果这里有问题,还得回顾到之前的步骤看看是哪里的设置不对。

如果你是想在A机器访问B机器上的oracle数据库,那么A机器是客户端,B机器是服务端。我们接下来就是在客户端验证连接服务端的情况。

tnsping服务端的ip,如下图所示,显示连接10毫秒,说明连接没有问题。

访问别的机器的Oracle数据库,报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务_第9张图片

一般这个情况下,在客户端直接以sqlplus 用户/密码@主机/实例来访问服务端的oracle数据库就没问题了。如果这个做到了,那可以直接在客户端使用PL/SQL Developer软件连接服务端数据库了。

 

独孤尚良dugushangliang——著

你可能感兴趣的:(ORACLE)