Ubuntu lsnrctl网络连接问题怎么解决
导读:Ubuntu 上 lsnrctl 网络连接问题排查与修复 一 快速自检清单 确认监听器运行状态:执行 lsnrctl status;若未运行,执行 lsnrctl start。 校验环境变量:确保 ORACLE_HOME、ORACLE_S...
Ubuntu 上 lsnrctl 网络连接问题排查与修复
一 快速自检清单
- 确认监听器运行状态:执行 lsnrctl status;若未运行,执行 lsnrctl start。
- 校验环境变量:确保 ORACLE_HOME、ORACLE_SID 正确并已加入 PATH,例如:
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin - 检查监听端口连通性:在服务器上执行 ss -lntp | grep 1521 或 netstat -tulnp | grep 1521;在客户端用 telnet 服务器IP 1521 或 nc -vz 服务器IP 1521 测试。
- 开放防火墙端口:
Ubuntu 常用 ufw:sudo ufw allow 1521/tcp;
或 firewalld:sudo firewall-cmd --add-port=1521/tcp --permanent & & sudo firewall-cmd --reload;
或 iptables:sudo iptables -A INPUT -p tcp --dport 1521 -j ACCEPT。 - 查看日志定位:
监听器日志:$ORACLE_HOME/network/log/listener.log;
数据库告警日志:$ORACLE_HOME/diag/rdbms/数据库名/实例名/trace/alert_实例名.log。
二 常见错误与对应处理
| 错误码或现象 | 含义与常见原因 | 处理要点 |
|---|---|---|
| TNS-12541: TNS:no listener | 监听器未启动/端口不对/被防火墙拦截 | 启动监听器:lsnrctl start;核对 listener.ora 的 HOST/PORT;放行 1521/tcp 防火墙 |
| TNS-12560: TNS:protocol adapter error | 客户端/服务器版本或网络异常 | 检查网络与版本兼容,确保监听端口可达 |
| TNS-12537: TNS:connection closed | 目标实例未启动或不可用 | 启动数据库实例(如 sudo systemctl start oracle-xe 或等效方式) |
| TNS-12162: TNS:net service name is incorrectly specified | 连接串/服务名配置错误 | 修正 tnsnames.ora 或连接字符串 |
| TNS-12154: TNS:could not resolve the connect identifier specified | 无法解析连接标识 | 检查 tnsnames.ora 与 DNS/hosts 解析 |
| TNS-00515: Lost connection to the Oracle server | 网络中断/服务器过载 | 排查网络稳定性与服务器负载 |
| 启动时报 Address already in use | 端口被占用 | 用 ss/lsof 查占用进程并终止,或更改 listener.ora 的 PORT 后重启监听器 |
三 配置与网络关键点
- 正确配置 listener.ora:确保 HOST 填写服务器可被客户端解析的 IP 或主机名,PORT 与客户端一致(默认 1521)。示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname_or_ip)(PORT = 1521))
)
)
修改后执行 lsnrctl stop & & lsnrctl start(或仅 lsnrctl reload 以热加载)。 - 修改监听端口:编辑 listener.ora 的 PORT(如改为 1522),保存后重启监听器并用 lsnrctl status 验证新端口监听。
- 主机名与解析:若 HOST 使用主机名,确保客户端可解析(/etc/hosts 或 DNS 正确);否则直接使用 服务器IP 更稳妥。
- 权限与临时目录:确保 /tmp 权限为 drwxrwxrwt,且 Oracle 相关目录与文件可被 Oracle 用户访问。
四 一键式排查命令脚本
- 查看监听状态与监听地址:
lsnrctl status
ss -lntp | grep 1521 || netstat -tulnp | grep 1521 - 启动/重启监听器:
lsnrctl stop & & lsnrctl start或仅重载配置
lsnrctl reload - 客户端连通性测试:
telnet 服务器IP 1521 || nc -vz 服务器IP 1521 - 防火墙放行(按系统选择其一):
sudo ufw allow 1521/tcp
sudo firewall-cmd --add-port=1521/tcp --permanent & & sudo firewall-cmd --reload
sudo iptables -A INPUT -p tcp --dport 1521 -j ACCEPT - 端口占用排查与处理:
sudo lsof -i :1521
sudo kill -9 # 确认进程无用后再终止 - 日志实时查看:
tail -f $ORACLE_HOME/network/log/listener.log
tail -f $ORACLE_HOME/diag/rdbms///trace/alert_*.log
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu lsnrctl网络连接问题怎么解决
本文地址: https://pptw.com/jishu/783191.html
