在 Debian(以及大多数 Linux 发行版)中,lsnrctl 是 Oracle Database 的监听控制工具,不是系统自带命令。如果你已经安装了 Oracle Database(通常是 Oracle 软件,而不是通过 apt 安装的),可以按下面步骤添加/配置监听。
lsnrctl 是否可用which lsnrctl
或
lsnrctl status
如果提示找不到命令,说明:
通常:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
(路径根据你的实际安装情况调整)
netca(图形界面)netca
需要 X11 或 X forwarding
listener.ora路径一般在:
$ORACLE_HOME/network/admin/listener.ora
示例配置(添加一个监听):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = orcl)
)
)
如果是 Oracle 12c+ 多租户,通常不需要
SID_LIST,PDB 会自动注册。
lsnrctl start
如果监听名不是默认的 LISTENER:
lsnrctl start LISTENER
lsnrctl status
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1522))
)
)
启动:
lsnrctl start LISTENER2
可能原因:
主机名无法解析
hostname
cat /etc/hosts
确保有:
127.0.0.1 localhost
127.0.1.1 debian-hostname
端口被占用
ss -lntp | grep 1521
在数据库内执行:
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521))';
ALTER SYSTEM REGISTER;
✅ 添加监听 = 编辑 listener.ora + lsnrctl start
✅ Debian 本身不提供 lsnrctl,必须安装 Oracle
✅ 推荐先确认 ORACLE_HOME 和 PATH
如果你愿意,可以告诉我:
我可以给你一份完全贴合你环境的配置。