最近有一个需求 要求开发人员不能随便连接测试的数据库
又不想太过复杂,部分人还得进行连结.
查了下往上是有方案的:
就是 TCP_VALIDNODE_CHECKING 参数
解决方法和说明如下
来源: https://www.linuxidc.com/Linux/2014-10/108650.htm
修改$JAVA_HOME/NETWORK/ADMIN/sqlnet.ora文件 增加以下内容(红色表示注释): #开启ip限制功能 tcp.validnode_checking=yes #允许访问数据库的IP地址列表,多个IP地址使用逗号分开 tcp.invited_nodes=(192.168.1.110) #禁止访问数据库的IP地址列表,多个IP地址使用逗号分开 tcp.excluded_nodes=(192.168.1.111) 然后重启监听即可。 注: 1、第一行必需写,任何平台都可以,但是只适用于TCP/IP。 2、第二行和第三行任写一行即可,如果tcp.invited_nodes与tcp.excluded_nodes都存在,以tcp.invited_nodes为主。 3、不要禁止服务器本机的IP地址,否则通过lsnrctl将不能启动或停止监听,因为该过程监听程序会通过本机的IP访问监听器。
但是我这边有一个坑.
因为我的虚拟机里面为了保证能够快速clone 并且能够支持 外部访问, tnsname 里面都是设置的机器名.
所以 需要改成如下状态
增肌本机的机器名, 本机的IP地址以及最简单的 loopback的地址.
tcp.validnode_checking=yes tcp.invited_nodes=(10.24.22.118,Win12r2Update,127.0.0.1,10.24.22.161,10.24.22.162,10.24.22.238) TCP.EXCLUDED_NODES=()
可以增加上 app的地址和可以允许访问的 ip地址 放到括号里面就可以了
设置完之后执行命令 reload即可 不需要重新start 一下
lsnrctl reload