lsnrctl 是 Oracle 数据库监听程序(Listener) 的管理工具,不是 Ubuntu 自带的命令,而是 Oracle 数据库软件(通常是 Oracle Database 或 Oracle Client)安装后提供的。
下面按常见使用场景给你讲清楚在 Ubuntu 上怎么用。
你必须在 Ubuntu 上安装了 Oracle 数据库(或 Oracle Client),并且:
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
⚠️ Ubuntu 官方仓库没有
lsnrctl,只能通过 Oracle 安装获得
lsnrctl status
输出示例:
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary...
lsnrctl start
如果监听名不是默认的 LISTENER:
lsnrctl start LISTENER_NAME
lsnrctl stop
lsnrctl reload
常用于修改 listener.ora 后
lsnrctl
进入后可用:
LSNRCTL> status
LSNRCTL> start
LSNRCTL> stop
LSNRCTL> exit
$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/network/admin/tnsnames.ora
示例 listener.ora:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
原因:
解决:
which lsnrctl
echo $ORACLE_HOME
检查:
sudo ufw status
0.0.0.0 或实际 IPtnsnames.ora 是否正确Oracle 不推荐用 systemd 管监听,但你可以写脚本。
| 功能 | 命令 |
|---|---|
| 查看状态 | lsnrctl status |
| 启动 | lsnrctl start |
| 停止 | lsnrctl stop |
| 重载 | lsnrctl reload |
如果你愿意,可以告诉我:
我可以给你针对性的完整配置示例。