Ubuntu 下 lsnrctl 故障排除步骤
一 快速定位流程
二 常见错误与修复对照表
| 症状/错误码 | 可能原因 | 修复要点 |
|---|---|---|
| command not found | Oracle 未安装或 PATH 未包含 $ORACLE_HOME/bin | 安装 Instant Client/数据库;export PATH=$PATH:$ORACLE_HOME/bin |
| TNS-12541: TNS:no listener | 监听器未启动 | 执行 lsnrctl start;确认端口未被占用 |
| Address already in use | 端口 1521 被占用 | 用 netstat/lsof 查 PID 并 kill;或 listener.ora 改为 1522 |
| TNS-12560 / TNS-00535 | 环境变量错误、协议适配器问题 | 校正 ORACLE_HOME、ORACLE_SID、PATH;必要时用绝对路径执行 |
| TNS-12537: TNS:connection closed | 网络不通或防火墙拦截 | 客户端/服务器双向放行 1521/tcp;测试连通性 |
| TNS-12514 | 监听未注册请求的服务名 | 确认数据库实例已启动并动态注册;必要时在 listener.ora 的 SID_LIST_LISTENER 静态注册 |
| TNS-01151 | listener.ora 段名/语法错误 | 修正 LISTENER 段名与括号匹配,重启监听 |
| TNS-12555 / Linux Error: 1 | /tmp 或 /var/tmp/.oracle 权限不当 | 确保 /tmp 权限为 1777;修正 .oracle 目录属主(如 oracle:dba) |
| Illegal seek | 旧版 Oracle 脚本与 dash 不兼容 | 执行 dpkg-reconfigure dash 选 No,改用 bash |
| error while loading shared libraries | 依赖库缺失(如 libncurses.so.5) | 安装相应库;或设置 LD_LIBRARY_PATH=$ORACLE_HOME/lib |
三 配置文件与兼容性要点
四 网络与防火墙检查
五 日志与进一步诊断