1、连接数据库显示无监听程序,首先查看服务器的oracle监听服务是否开启,服务名称:OracleOraDb11g_home1TNSListener(具体环境中可能不完全一样,但是认准TNSListener是没错的)
2、本地使用127.0.0.1可以连接,但使用本机IP则显示无监听,使用其他机器连接也是无监听,先排查一下防火墙问题
3、排查防火墙后依旧没有解决,那么问题根源所在:oracle的listener.ora文件
解决办法:
listener.ora文件路径:F:appAdministratorproduct11.2.0dbhome_1NETWORKADMINlistener.ora(具体安装路径可能有不同,请根据自己的安装路径来找),修改之后需要重启监听服务
解决过程中的一些其他技巧:
1、cmd可以使用的命令:
lsnrctl stop 停止监听服务
lsnrctl start 开始监听服务
lsnrctl reload 重启监听服务
lsnrctl status 查看监听服务状态
tnsping IP 查看该IP的监听服务是否正常 例如:tnsping 192.168.20.25
2、可以使用sqlplus进入数据库进行操作(在各种工具都无法连接数据库的情况下,sqlplus依旧坚挺)
show parameter listen 查看数据库中关于监听的配置
alter system set local_listener=‘(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))’ (修改监听配置列表中的参数,引号中的参数仅作为样例)
原先无论如何都无法连接数据库,显示无监听,进行这一步修改之后,本机使用127.0.0.1就可以连接数据库了,但其他机子以及使用IP依旧无法连接,然后才有了上面一步的操作
其他收获:
1、有些机子是认不到localhost的,所以尽量使用127.0.0.1
2、plsql会读取F:appAdministratorproduct11.2.0dbhome_1NETWORKADMIN nsnames.ora文件
3、修改了listener.ora文件之后,如果出现服务无法启动(提示服务没有报告任何错误),那么很有可能是listener.ora文件中某个地方写错了,比如说少了个括号什么的