Oracle sqlnet.ora 设置TCP.VALIDNODE_CHECKING=YES没有生效

本文探讨了如何通过修改sqlnet.ora配置文件来禁止特定IP(例如10.190.60.194)访问Oracle数据库的问题。尽管配置了tcp.excluded_nodes参数并重启了监听器,但该IP仍然能够访问数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想禁止10.190.60.194这个IP地址访问我的数据库,具体的sqlnet.ora文件如下,但是lsnrctl reload listener以后,使用10.190.60.194这个IP地址还是可以访问数据库,请问为什么?

-bash-3.00$ more sqlnet.ora
# sqlnet.ora Network Configuration File: /oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES)

tcp.validnode_checking=yes
tcp.excluded_nodes=(10.190.60.194)
#tcp.invited_nodes=(10.190.60.194)
### Oracle RAC NAT 映射 1521 端口可访问但连接数据库ORA-12541 的解决方案 ORA-12541 错误通常表示监听器无法接受连接请求。此问题可能由多种原因引起,包括但不限于监听器配置不当、TNS 配置文件设置错误或网络层的 NAT 映射未正确处理。 #### 一、确认监听器状态 确保 Oracle 监听器已启动并正在运行。可以通过以下命令验证监听器的状态: ```bash lsnrctl status ``` 如果监听器未启动,则可以尝试重新启动它: ```bash lsnrctl start ``` 此外,在 `listener.ora` 文件中需明确指定主机名和 IP 地址,避免因 NAT 导致解析冲突[^1]。 --- #### 二、检查 TNS 配置文件 (`tnsnames.ora`) 在客户端和服务端都需要正确配置 `tnsnames.ora` 文件。以下是标准的配置模板: 对于服务端: ```plaintext MYDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 外网映射后的IP地址)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = nat123) ) ) ``` 注意:当使用 NAT 映射时,应将 `HOST` 字段替换为外部能够访问的实际 IP 地址,而不是内网的真实地址[^2]。 --- #### 三、调整 SQLNET 参数 为了防止潜在的安全风险,可以在 `sqlnet.ora` 中限制允许访问的 IP 范围。例如: ```plaintext TCP.VALIDNODE_CHECKING = YES TCP.INVITED_NODES = (外网映射后的IP地址) ``` 上述参数会强制监听器仅接受来自特定 IP 地址范围内的连接请求,从而减少不必要的干扰[^3]。 --- #### 四、排查 NAT 和防火墙影响 即使 1521 端口在网络层面已经开放,仍可能存在某些中间设备阻止完整的通信链路建立。建议执行如下操作来排除这些可能性: 1. **Ping 测试**:从客户端 ping 到目标服务器以检验基本连通性; 2. **Telnet 测试**:利用 telnet 命令模拟一次简单的 TCP 连接过程,观察是否存在异常中断现象; ```bash telnet <外网映射后的IP> 1521 ``` 3. 如果发现有丢包或者延迟过高情况,联系网络管理员优化路由策略;另外还需核查是否有额外安全机制(比如 IPSec 或 WAF)介入其中造成阻碍效果[^4]。 --- #### 五、日志分析与调试模式启用 开启详细的跟踪记录有助于快速定位具体环节上的失误之处。修改 listener 日志级别至最高档位以便收集更多有用数据供后续诊断参考之用。 编辑 `$ORACLE_HOME/network/admin/listener.ora` 添加下面几行内容之后重启 service 即生效: ```plaintext LOG_DIRECTORY_LISTENER=$ORACLE_BASE/diag/tnslsnr/<hostname>/listener/trace/ TRACE_LEVEL_CLIENT= SUPPORT DIAG_ADR_ENABLED_listener=false ADR_BASE_listener=/u01/app/oracle/product/11.2.0/dbhome_1/log ``` 最后再次查看最新产生的 trace file 是否含有任何关于拒绝接入方面的描述信息作为进一步改进依据. --- ### 结论 综上所述,针对 Oracle RAC 环境下通过 NAT 映射 1521 端口后出现 ORA-12541 错误的情况,可以从以下几个方面入手解决问题:一是核实监听器工作状况及其关联配置项准确性;二是审阅 tnsnames 定义是否匹配实际需求场景;三是考虑 sqlnet 层面设定的影响因素;四是深入探究网络架构设计合理性以及相关联防护措施的有效程度;最终借助全面的日志体系辅助完成整个修复流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值