Oracle ORA 12541 报错解决过程

   

   

Oracle 导入全库之后使用plsql登陆时报错

   

版本12C版本2

   

ORA-12541: TNS: No Listener

   

   

   

再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法登陆,报错如上。

   

首先考虑是防火墙问题,查看防火墙和selinux均为关闭状态

   

然后查看监听状态

查看 监听状态的命令为首先使用oracle 用户登陆操作系统,命令lsnrctl

进入监听程序,关键status 查看监听状态

   

里面详细列出了监听的状态以及服务端的监听文件位置,

查看监听文件

   

   

查看客户端的监听配置

   

   

   

无发现明显问题,下面尝试重启监听

   

重启和启动监听的命令为

lsnrctl stoplsnrctl start

   

   

使用oracle用户执行该命令

   

执行过上述的重启监听之后,依然报错

   

为了排除防火墙因素在同网段使用ssh测试了连接1521端口,结果测试结果为访问被拒绝

初步还是怀疑监听服务的问题,再次查看监听文件

HOST =localhost 修改为本地IP地址HOST = 172.16.103.9,注意修改监听之前需要先关闭监听,关闭监听之后再修改监听文件,最后再启动监听

修改后的监听文件

启动监听

查看监听状态

1分30秒过去了,未监听到实例。

此时尝试使用plsql连接

   

此时依旧报错12514,再次查看监听状态,依旧是未监听到实例

再次尝试修改监听文件,将监听IP修改未监听主机名。因为hosts文件中有解析将本机解析为oracle,故将监听文件中的主机名修改为oracle

修改后的监听文件

对应的hosts文件

再次启动监听,查看监听状态

   

已经监听到实例,再次使用plsql连接,plsql已经可以正常连接。

   

总结:本库版本是oracle 12c 版本2 操作系统为oracle linux 7.3 这个库我执行过从12C版本1 RAC集群到这个库的整库还原,使用的expdp和impdp备份还原,备份还原之后出现此故障,不知道是oracle自身的bug还是因为我之前的库和现有的库版本不一致导致的问题。总之,监听文件中HOST对应的主机需要写主机名,写IP不生效,百度上说将HOST对应的值写成0.0.0.0的也可以监听到实例,再解决问题的过程中,没有尝试该方法。因为不清楚HOST=0.0.0.0是泛指该主机能连接到的所有主机还是该主机自身。还是HOST仅仅只能使用主机名来解析呢,还有,在我执行全库还原操作之前是没有这个问题的,监听文件的默认配置为localhost。根据本机hosts文件,localhost可解析为127.0.0.1和::1,这两条已经足够代表本机自身了,为什么还需要使用安装oracle过程中单独添加的解析条目 172.16.103.9 oracle 呢?

   

猜你喜欢

转载自www.cnblogs.com/withfeel/p/12421953.html