在 Ubuntu 上,lsnrctl 是 Oracle Database Listener 的管理工具,并不是系统自带命令,需要先安装并配置 Oracle 数据库(或 Oracle Instant Client + 监听组件)。下面按常见情况说明。
lsnrctl 通常位于:
$ORACLE_HOME/bin/lsnrctl
例如:
/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl
检查是否存在:
which lsnrctl
如果没有,说明 Oracle 未安装或未配置环境变量。
在使用 lsnrctl 前,需要设置:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
(路径按你的实际安装位置修改)
可写入:
~/.bashrc
然后:
source ~/.bashrc
lsnrctl start
lsnrctl stop
lsnrctl status
lsnrctl reload
lsnrctl services
监听配置一般在:
$ORACLE_HOME/network/admin/listener.ora
示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
修改后执行:
lsnrctl reload
lsnrctl: command not found
✅ 解决:确认 Oracle 已安装,并正确设置 ORACLE_HOME 和 PATH
TNS-01190: The user is not authorized
✅ 解决:使用安装 Oracle 的用户(通常是 oracle):
su - oracle
TNS-12542: TNS:address already in use
✅ 解决:
netstat -tunlp | grep 1521
修改 listener.ora 端口或释放端口
如果你 只是客户端,不需要 lsnrctl,只需要:
sqlplustnsnames.oralsnrctl 只在 数据库服务器端 使用。
如果你愿意,可以告诉我:
我可以给你 一步步命令级指导。