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的解释:
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)
这是问什么呢?
有谁懂解答一下。