在 Debian 上(通常是安装了 Oracle 数据库 或 Oracle Client 后才会有 lsnrctl),添加监听(listener)一般是通过修改 listener.ora 文件,然后用 lsnrctl 启动/重载。
下面按步骤说明。
which lsnrctl
如果没有命令,说明没装 Oracle 软件(Database 或 Client)。
通常路径类似:
$ORACLE_HOME/bin/lsnrctl
确保已设置:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
一般位置:
$ORACLE_HOME/network/admin/listener.ora
或者:
$ORACLE_BASE/network/admin/listener.ora
编辑 listener.ora:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
)
)
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1522))
)
)
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = orcl)
)
)
说明:
LISTENER2:监听名(可自定义)HOST:服务器 IP 或 hostnamePORT:监听端口SID_LIST_*:非必须,但静态注册时需要lsnrctl start LISTENER2
查看状态:
lsnrctl status LISTENER2
lsnrctl reload LISTENER
Debian 一般 不会 自动起监听,可:
su - oracle -c "$ORACLE_HOME/bin/lsnrctl start LISTENER2"
创建:
/etc/systemd/system/oracle-listener.service
[Unit]
Description=Oracle Listener
After=network.target
[Service]
User=oracle
Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1"
ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start LISTENER2
ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl stop LISTENER2
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable oracle-listener
✅ 端口被占用
netstat -tunlp | grep 1522
✅ 主机名解析失败
在 /etc/hosts 中确认 IP 和 HOST 对应
✅ 监听起了但连不上
如果你愿意,可以告诉我:
我可以直接帮你写一份可用的 listener.ora。