CentOS 上 lsnrctl 常见问题与排查要点
一 命令与权限类问题
export ORACLE_HOME=/u01/app/oracle/product/19.3/dbhome_1; export PATH=$ORACLE_HOME/bin:$PATH;必要时用 sudo -u oracle lsnrctl status。ls -l $(which lsnrctl);必要时 chmod +x;优先以 oracle 用户执行,或使用 sudo -u oracle。$ORACLE_HOME/bin 下运行 ./lsnrctl;若仍异常,极可能是 Oracle 软件安装不完整,需检查安装日志与介质。二 监听器无法启动与端口冲突
lsnrctl start 失败或 lsnrctl status 显示“TNS-12541: TNS:no listener”。处理:先 lsnrctl status 确认状态;再检查默认端口 1521 是否被占用:ss -lntp | grep 1521 或 netstat -tulnp | grep 1521;若被占用,释放占用进程后 lsnrctl stop → lsnrctl start。三 服务注册与解析类问题
lsnrctl status 显示“The listener supports no services”。处理:在 listener.ora 中显式静态注册数据库 SID,例如:lsnrctl stop → lsnrctl start 使配置生效。tnsping ORCL 验证解析;注意 tnsping 仅验证网络与解析是否可达,不保证数据库实例可用。firewall-cmd --zone=public --add-port=1521/tcp --permanent && firewall-cmd --reload;同时排查网络连通性与安全组策略。四 环境变量与 SQL*Plus 联动问题
export ORACLE_BASE=/opt/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/19.2.0/dbhome_1export PATH=$ORACLE_HOME/bin:$PATHexport TNS_ADMIN=$ORACLE_HOME/network/adminsource ~/.bash_profile 使配置生效。sqlplus / as sysdba 要求输入口令(本应免密)。处理:在 sqlnet.ora 中启用本机认证,例如:SQLNET.AUTHENTICATION_SERVICES=(ALL) 或 SQLNET.AUTHENTICATION_SERVICES=(NTS),保存后重试。五 快速排查清单
echo $ORACLE_HOME / $PATH 正确;必要时用 which lsnrctl 与绝对路径验证。lsnrctl status 观察监听状态与已注册服务;异常时先 lsnrctl stop 再 lsnrctl start。ss -lntp | grep 1521;释放占用或调整端口后重启监听。tnsping ORCL 验证解析;服务器端放行 1521/tcp 防火墙端口。