在 Debian 上 lsnrctl 连接失败,通常不是“系统问题”,而是 Oracle 监听本身没起 / 环境变量不对 / 权限不对 这几类原因。下面按最常见 → 较少见给你排查。
lsnrctl status
如果报错类似:
TNS-12541: TNS:no listener
说明监听没起。
✅ 解决:
lsnrctl start
lsnrctl 依赖环境变量。
echo $ORACLE_HOME
echo $ORACLE_SID
如果为空,就会连不上。
✅ 解决(示例):
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
⚠️ Debian 上 oracle 用户 才有正确权限,别用 root 直接跑。
Debian 上 Oracle 一般装在 oracle 用户下。
✅ 正确做法:
su - oracle
lsnrctl status
用 root 跑常会失败。
路径一般在:
$ORACLE_HOME/network/admin/listener.ora
常见错误:
示例正确配置:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
改完重启:
lsnrctl reload
netstat -tunlp | grep 1521
或
ss -tunlp | grep 1521
如果有其他进程占用,监听起不来。
Debian 64 位可能缺库:
ldd $ORACLE_HOME/bin/lsnrctl
缺哪个装哪个,比如:
apt install libaio1
Debian 默认没 SELinux,但如果有防火墙:
iptables -L
确保 1521 放行。
whoami
echo $ORACLE_HOME
echo $ORACLE_SID
lsnrctl status
如果你能贴 完整报错信息(哪怕是截图文字),我可以直接告诉你是哪一条原因。
例如:
TNS-12545
TNS-12560
TNS-01106
这些错误码含义非常明确。