在 Debian(以及其它 Linux 发行版)上使用 lsnrctl(Oracle Listener Control 工具)时,常见错误通常与 环境变量、权限、监听器配置、端口占用、Oracle 软件安装 等有关。下面按“现象 → 原因 → 解决办法”的方式总结常见错误。
lsnrctl: command not found原因
PATH 未包含 $ORACLE_HOME/bin解决
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
确认:
which lsnrctl
ORACLE_HOME 未设置或设置错误现象
lsnrctl start 无反应解决
echo $ORACLE_HOME
ls $ORACLE_HOME/network/admin/listener.ora
ORACLE_SID 错误(非直接但相关)虽然 lsnrctl 不直接依赖 ORACLE_SID,但混淆会导致误判。
TNS-01106: Listener using listener name LISTENER has already been started原因
解决
lsnrctl status
TNS-12545: Connect failed because target host or object does not exist原因
listener.ora 中 HOST 配置错误/etc/hosts 解析异常解决
hostname
cat /etc/hosts
示例:
127.0.0.1 localhost
192.168.1.10 oracle debian
TNS-12541: TNS:no listener原因
解决
lsnrctl start
TNS-12542: TNS:address already in use原因
解决
ss -lntp | grep 1521
或:
netstat -tlnp | grep 1521
原因
解决
TNS-01101: Could not find listener.ora原因
listener.ora 不存在TNS_ADMIN 指向错误解决
echo $TNS_ADMIN
ls $ORACLE_HOME/network/admin
TNS-01150: The listener parameter file is incorrect原因
listener.ora 语法错误示例错误配置
LISTENER =
(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521))
Permission denied原因
解决
id
ls -l $ORACLE_HOME/network/admin
建议:
su - oracle
Debian 默认不会自动启动 listener。
建议
lsnrctl startwhoami
echo $ORACLE_HOME
echo $PATH
lsnrctl status
ss -lntp | grep 1521
cat $ORACLE_HOME/network/admin/listener.ora
如果你愿意,可以:
我可以帮你精确分析。