改端口不增强安全性但可规避自动化扫描,需同步更新listener.ora、tnsnames.ora和local_listener三处配置并重启监听器,漏一即失败。

改端口本身不增强安全性,但能规避自动化扫描器的默认探测;真正生效的前提是三处配置全部同步更新且监听重启成功,漏一处就白改。
为什么只改 listener.ora 会失败
监听器启动时硬编码绑定端口,lsnrctl reload 不重读端口配置,必须 lsnrctl stop && lsnrctl start。常见错误是改完 listener.ora 后只执行 reload,lsnrctl status 里“Listening Endpoints Summary”仍显示 :1521。
-
listener.ora中所有(PORT = 1521)都得替换成新值(如1522),包括 IPC 地址里的EXTPROC1521—— 这个后缀也得同步改成EXTPROC1522,否则TNS-12545报错 - 路径必须是
$ORACLE_HOME/network/admin/listener.ora,不是$ORACLE_HOME/dbs/或其他位置 -
PROTOCOL必须大写、全拼,写成protocol或缺省会导致解析失败
客户端连不上?检查 tnsnames.ora 和 local_listener
tnsnames.ora 是客户端解析服务名的依据,local_listener 是数据库实例向监听器注册自身服务的“地址”。两者不一致,lsnrctl status 里服务状态就是 UNKNOWN,tnsping orcl 会超时。
- 修改
$ORACLE_HOME/network/admin/tnsnames.ora中每个服务名对应的(PORT = 1521)→(PORT = 1522) - 进 SQL*Plus 执行:
ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))' SCOPE=BOTH;;HOST值要和listener.ora中一致,不能写127.0.0.1而监听绑的是主机名 - 改完立即执行
ALTER SYSTEM REGISTER;,避免等默认 60 秒动态注册
防火墙和网络策略常被忽略
Linux 上 iptables 或 firewalld 默认不放行非标准端口;云环境还要检查安全组规则。即使监听已跑在 1522,外部连接仍会卡在 TCP SYN。
- 确认监听进程实际监听的 IP+端口:
netstat -tlnp | grep :1522,看PID/Program是否为tnslsnr - 临时放行(测试用):
sudo firewall-cmd --add-port=1522/tcp --permanent && sudo firewall-cmd --reload - 云服务器务必同步更新安全组入方向规则,端口范围填精确值,别写成
1520-1525
最易被跳过的环节是:改完监听端口后没验证 tnsping,而是直接上应用连接——结果报 ORA-12170 或 TNS-12541,回头再查才发现 tnsnames.ora 没动,或 local_listener 还指着旧端口。











