lsnrctl 是 Oracle 数据库监听(Listener)的管理工具,常用于启动、停止、查看监听状态。下面按常见故障场景 + 排错步骤给你一个实用指南。
lsnrctl status
常见问题表现:
TNS-12541: TNS:no listener → 监听没启动TNS-12560: TNS:protocol adapter error → 环境变量或 Oracle Home 有问题lsnrctl start
如果失败,看报错信息,常见原因:
lsnrctl status listener_name
lsnrctl services
services 可确认:
READY 还是 BLOCKED原因:监听未启动或名字不对
✅ 解决:
lsnrctl start
lsnrctl start LISTENER
原因:
✅ 解决:
echo $ORACLE_HOME
echo $ORACLE_SID
whoami
确保:
oracle 用户.bash_profile 设置正确原因:端口(默认 1521)被占用
✅ 解决:
netstat -tunlp | grep 1521
或修改 listener.ora:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host)(PORT = 1522))
)
)
原因:
✅ 解决:
sqlplus / as sysdba
ALTER SYSTEM REGISTER;
或配置静态监听(listener.ora):
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1)
(SID_NAME = orcl)
)
)
$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/network/log/listener.log
查看日志:
tail -f $ORACLE_HOME/network/log/listener.log
whoami → 必须是 oracleecho $ORACLE_HOMElsnrctl statuslistener.logsqlplus 能否连如果你有具体报错信息(比如 TNS-xxxxx),可以直接贴出来,我可以帮你精准分析。