当前位置: 代码网 > it编程>数据库>Oracle > Oracle修改端口号之后无法启动的解决方案

Oracle修改端口号之后无法启动的解决方案

2025年06月09日 Oracle 我要评论
一、问题根源分析​​​​配置文件语法错误​​修改listener.ora时遗漏关键符号(如括号不匹配)、格式错误或路径错误会导致解析失败。​​典型表现​​:执行lsnrctl start后报错 tns

一、问题根源分析​​

​​配置文件语法错误​​

  • 修改listener.ora时遗漏关键符号(如括号不匹配)、格式错误或路径错误会导致解析失败。
  • ​​典型表现​​:执行lsnrctl start后报错 tns-12542: tns: 监听器地址无效。

​​端口被占用或防火墙拦截​​

  • 新端口可能被其他进程占用(如apache、其他数据库)或被防火墙阻止。
  • ​​验证命令​​:
# linux/unix
netstat -tuln | grep <新端口号>
# windows
netstat -ano | findstr "<新端口号>"
  • ​未同步更新客户端配置​
    • 仅修改listener.ora而未更新tnsnames.ora,导致客户端无法连接,误判为监听器故障。
  • ​sid或服务名未正确关联​
    • 监听器未绑定到正确的数据库实例(sid),导致无法路由连接请求。

​二、保姆级解决方案​​

​​步骤1:修正监听器配置文件 (listener.ora)​​

  • ​文件路径​​:$oracle_home/network/admin/listener.ora
  • ​正确配置模板​​:
listener =
  (description_list =
    (description =
      (address = (protocol = tcp)(host = 主机名)(port = 新端口号))  # 修改此处端口
    )
  )
sid_list_listener =
  (sid_list =
    (sid_desc =
      (sid_name = 数据库sid)       # 例如 orcl
      (oracle_home = oracle安装路径)  # 例如 /u01/app/oracle/product/19.0.0/dbhome_1
    )
  )

​关键检查点​​:

  • 括号必须成对闭合,避免嵌套错误。
  • host 需为服务器ip或可解析的主机名(避免用localhost)。

​​步骤2:更新客户端配置 (tnsnames.ora)​​

  • ​文件路径​​:$oracle_home/network/admin/tnsnames.ora
  • ​修改示例​​:
服务别名 =
  (description =
    (address = (protocol = tcp)(host = 主机名)(port = 新端口号))  # 与listener.ora一致
    (connect_data =
      (server = dedicated)
      (service_name = 数据库服务名)  # 例如 orcl
    )
  )

步骤3:重启监听器并验证​

# 停止监听器
lsnrctl stop
# 启动监听器
lsnrctl start
# 检查状态
lsnrctl status
  • ​预期输出​​:显示listening on: (description=(address=(protocol=tcp)(host=xxx)(port=新端口号)) 且状态为 ​​"service ready"​​。

​​步骤4:处理端口占用与防火墙​

  • ​释放端口​​:终止占用进程(通过kill -9 <pid>或windows任务管理器)。
  • ​开放防火墙​​:
# linux
firewall-cmd --add-port=<新端口号>/tcp --permanent
firewall-cmd --reload
# windows:高级安全防火墙 → 新建入站规则

​​步骤5:检查环境变量与权限​​

  • ​确认oracle_home正确​​:
echo $oracle_home  # linux
set oracle_home    # windows
  • ​文件权限​​:确保oracle用户对listener.oratnsnames.ora有读写权限:
chown oracle:oinstall $oracle_home/network/admin/*.ora
chmod 640 $oracle_home/network/admin/*.ora

三、预防性措施​​

  • ​变更前备份配置​​:
cp listener.ora listener.ora.bak
cp tnsnames.ora tnsnames.ora.bak
  • ​使用工具验证配置​​:
    • tnsping 服务别名 测试客户端连通性。
  • ​rac环境特殊处理​​:
    • 通过srvctl更新集群监听配置:
srvctl modify listener -l listener -p "tcp:新端口号"
srvctl modify scan_listener -p 新端口号

总结​​

端口修改后监听器无法启动通常由​​配置遗漏或语法错误​​引发(占案例80%以上)。严格遵循以下流程可彻底解决:

  • ​双文件同步​​:同步修改listener.oratnsnames.ora
  • ​语法校验​​:检查括号闭合、参数格式;
  • ​环境验证​​:端口占用、防火墙、权限;
  • ​重启生效​​:通过lsnrctl status确认监听状态。

若仍失败,检查 $oracle_home/log/diag/tnslsnr/主机名/listener/alert/log.xml 中的详细错误日志。

到此这篇关于oracle修改端口号之后无法启动的解决方案的文章就介绍到这了,更多相关oracle修改端口号无法启动内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com