在 Debian 系统(或其他 Linux 发行版)上,lsnrctl 是 Oracle 数据库监听程序(Listener)的控制工具,主要用来管理 Oracle 的 监听服务(Listener)。
简单来说:它用来启动、停止、查看 Oracle 监听是否正常工作,以及客户端能不能连上数据库。
lsnrctl 是干什么的?Oracle 数据库不是直接被客户端连的,而是先连 监听器(Listener),监听器再把连接转给数据库实例。
lsnrctl 就是用来管这个监听器的。
lsnrctl start
如果数据库客户端连不上,很多时候就是监听没启动。
lsnrctl stop
lsnrctl status
你会看到:
LISTENER)✅ 客户端连不上数据库,第一件事就是看这个。
lsnrctl reload
修改了 listener.ora 后不用完全重启,可用这个。
lsnrctl services
可以看到:
Debian 本身 不带 lsnrctl,它是:
$ORACLE_HOME/bin/lsnrctl使用前提:
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
✅ 客户端报 ORA-12541: TNS:no listener
→ 监听没启动,用 lsnrctl start
✅ 报 ORA-12514: listener does not currently know of service
→ 数据库没注册到监听,看 lsnrctl status
✅ 改了监听端口或 IP
→ 改 listener.ora 后 lsnrctl reload
lsnrctl是 Oracle 数据库的“门卫管理员”,负责开门(监听)、关门(停止)、查谁来了(状态)。
如果你愿意,我可以:
lsnrctl status 输出listener.ora直接把报错贴出来就行。