TNS-12560: TNS: 协议适配器错误同时伴有TNS-00584: 有效节点检查配置错误的解决方法

:修改/home/oracle/app/product/11.2.0/db_1/network/admin/sqlnet.ora(与listener.ora同一目录)

增加白名单:

tcp.validnode_checking = yes
tcp.invited_nodes = (10.204.250.11,10.204.250.12,10.204.250.13)

重启listener时报错:

 

 

https://blog.csdn.net/langkeziju/article/details/12652247

oracle 提供了lsnrctl reload 命令,在下面两种情况

1. 修改listener.ora

 

2 .修改sqlnet.ora

 

之后又不想停止监听,可以考虑lsnrctl reload命令!

 

reload命令会重新读取listener.ora的内容,这个命令让用户不停止监听器的情况下,改变监听器的配置。

但是对于sqlnet.ora的修改考虑以下情况:

 

1. 如果之前sqlnet.ora没有被当前的监听器使用,这时必须关闭然后重启监听!

 

2. 如果之前正在使用sqlnet.ora,那么lsnrctl reload 是比较快的方式。当前已经建立的连接不会受到影响,动态监听服务完成的非常快,也几乎不受影响。

 

官方对于lsnrctl reload的解释:

 

 

Use the RELOAD command to reread the listener.ora file. This command enables you to add or change statically configured services without actually stopping the listener.

In addition, the database services, instances, service handlers, and listening endpoints that were dynamically registered with the listener will be unregistered and 

subsequently registered again.

 

 

 

 

意思和上面解释的差不多,在生产环境中对于sqlnet.ora文件的修改,保持必要的谨慎。

之前做实验进行lsnrctl reload 并未达到理想的效果。在生产库上执行的时候是选择了lsnrctl start/stop.

这两步操作的时间是很短的,3-4秒完成关闭和重启操作。

 

开始认为是listener.ora中的HOST配置有误,原来是别名,改成本机IP地址,测试也不行。

 

 

查了许多资料:

最后查到对于TNS-00584错误的解释:

Oracle Error :: TNS-00584
Valid node checking configuration error

Cause
Valid node checking specific Oracle Net configuration is invalid.

Action
Ensure the hosts specified in the "invited_nodes" and "excluded_nodes" are valid. For further details, turn on tracing and reexecute the operation.

http://www.itpub.net/thread-1019492-1-1.html

 

 

明确是添加invited_nodes的内容有问题,又看到一篇文章:

https://blog.csdn.net/klzs1/article/details/5964653?utm_source=blogxgwz6

检查了/oracle/11.1.0/network/admin/listener.ora没问题。
打开/oracle/11.1.0/network/admin/sqlnet.ora, 发现
SQLNET.INBOUND_CONNECT_TIMEOUT=6
tcp.validnode_checking=yes
tcp.invited_nodes=(ODB,ODB1,CLUDB)
中,ODB1 这个alias并没有在/etc/hosts中定义, 实际上ODB 和ODB1都是此机器的别名。将invited_nodes中的ODB1去掉,再启动,正常。或者在/etc/hosts 中加入这个定义也是可以的。
---------------------
作者:klzs1
来源:CSDN
原文:https://blog.csdn.net/klzs1/article/details/5964653
版权声明:本文为博主原创文章,转载请附上博文链接!

 

要求必须在/etc/hosts中配置别名。

 

修改sqlnet.ora,将ip改成alias别名:

tcp.validnode_checking = yes 
tcp.invited_nodes = (lnnanodomcrbak,lnnanodomcr,lnnanodomcr1,lnnanodwg,lnnanodwg1,localhost)

 

同时配置/etc/hosts:

 

[root@lnnanodomcrbak ~]# cd /etc/
[root@lnnanodomcrbak etc]# vi hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.204.250.13 lnnanodomcrbak
10.204.250.12 lnnanodomcr
10.204.250.14 lnnanodomcr1
193.169.0.8 lnnanodwgbak
193.169.0.7 lnnanodwg
193.169.0.9 lnnanodwg1
10.204.195.129 edoctor2
10.204.197.129 edoctor1

 

 

 再启动listener,成功了:

 

 

但是,其他ORACLE数据库sqlnet.ora又可以写IP:

在/home/oracle/app/product/11.2.0/db_1/network/admin目录下面的sqlnet.ora文件末尾加上

tcp.validnode_checking = yes 
tcp.invited_nodes = (10.227.232.5,10.227.232.6,10.227.232.7,10.227.232.8,10.227.232.9,10.227.232.10,10.227.232.11,10.227.232.12,10.227.232.13,10.227.232.14,10.227.232.15,10.227.232.16,10.227.232.17,10.227.232.18,10.227.232.19,10.227.232
.20,10.227.232.21,10.227.232.22,10.227.232.23,10.227.232.24,10.227.232.33,10.227.232.34,10.227.232.35,10.227.232.36,10.227.232.37,10.227.232.38,10.227.232.39,10.227.232.40,10.227.232.41,10.227.232.42,10.227.232.43,10.227.232.44,10.227.2
32.45,10.192.192.171,10.190.23.138,10.190.23.158,10.190.23.162,10.190.23.163,10.190.23.166,10.190.23.168,10.190.23.169,10.190.23.170,10.190.145.244,10.190.145.243,10.190.26.206)

这是问什么呢?

 

有谁懂解答一下。

 

posted on 2019-01-15 15:36  梓沂  阅读(2668)  评论(0编辑  收藏  举报