在 Debian 上使用 lsnrctl,本质上是使用 Oracle 数据库监听器管理工具。它本身不是 Debian 自带的命令,而是 Oracle Database(或 Oracle Client) 安装后提供的。
下面按常见场景说明。
lsnrctl 只有在以下情况才可用:
ORACLE_HOME 正确设置Debian 官方仓库 不包含 lsnrctl,需从 Oracle 官网下载安装。
which lsnrctl
或
ls $ORACLE_HOME/bin/lsnrctl
如果没有,说明 Oracle 未安装或未配置环境。
假设 Oracle 安装在:
/opt/oracle/product/19.3.0/dbhome_1
在 ~/.bashrc 或 ~/.profile 中添加:
export ORACLE_HOME=/opt/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
然后:
source ~/.bashrc
lsnrctl start
lsnrctl stop
lsnrctl status
示例输出关键项:
lsnrctl reload
lsnrctl help
$ORACLE_HOME/network/admin/listener.ora
示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
)
修改后:
lsnrctl reload
通常使用 oracle 用户:
su - oracle
而不是 root。
Debian 默认无 SELinux,但若有防火墙:
sudo ufw allow 1521/tcp
listener.ora 配置错误查看日志:
$ORACLE_HOME/network/log/listener.log
如果你 只是客户端,不需要 lsnrctl,只需:
sqlplustnsnames.oralsnrctl 只在 数据库服务端 才有意义。
如果你愿意,可以告诉我:
我可以给你更精确的命令。