在 Ubuntu 上 lsnrctl 不是系统自带命令,它来自 Oracle Database / Oracle Instant Client(Listener Control)。如果你在 Ubuntu 上执行 lsnrctl 报错或找不到命令,通常有以下几种情况和对应修复方法。
which lsnrctl
echo $ORACLE_HOME
which lsnrctl 为空 → 没安装或没配置环境变量lsnrctl 通常在:$ORACLE_HOME/bin/lsnrctl
如果你需要 lsnrctl(监听器),必须安装 Oracle Database,不能只装客户端。
(过程较复杂,简要步骤)
# 示例目录
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
然后验证:
lsnrctl status
❗ Oracle Instant Client 不包含 lsnrctl
Instant Client 只能连接数据库,不能启动监听器。
如果你只是连接远程 Oracle:
lsnrctlsqlplus 或 tnsping 即可如果你已经安装了 Oracle,但仍提示找不到:
vi ~/.bashrc
添加:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
生效:
source ~/.bashrc
验证:
lsnrctl status
如果命令能运行但报错:
TNS-12541: TNS:no listener
启动监听器:
lsnrctl start
查看状态:
lsnrctl status
文件位置:
$ORACLE_HOME/network/admin/listener.ora
示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
修改后重启:
lsnrctl stop
lsnrctl start
sudo apt install alien libaio1 unixodbc
ORACLE_HOME 已设置lsnrctl 在 $ORACLE_HOME/bin如果你愿意,可以告诉我:
我可以给你精确修复命令。