在 Debian 上遇到 lsnrctl 权限不足(Permission denied)的问题,通常是因为你没有使用正确的用户或环境变量不对。下面按常见场景给你说明解决办法。
lsnrctl 属于 Oracle 软件,必须用安装 Oracle 的用户(通常是 oracle)运行。
su - oracle
或
sudo su - oracle
然后再执行:
lsnrctl status
✅ 注意:
su -(带横杠),否则环境变量不对lsnrctl如果是类似:
LRM-00109: could not open parameter file
Permission denied
ls -l $ORACLE_HOME/network/admin/listener.ora
如果属主不是 oracle:
chown oracle:oinstall $ORACLE_HOME/network/admin/listener.ora
chmod 640 $ORACLE_HOME/network/admin/listener.ora
ls -ld $ORACLE_HOME
正确应为:
oracle oinstall
如果错:
chown -R oracle:oinstall $ORACLE_HOME
⚠️ 谨慎操作,避免影响数据库运行
在 oracle 用户下确认:
echo $ORACLE_HOME
echo $ORACLE_SID
which lsnrctl
如果没有:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
建议写入:
~oracle/.bash_profile
即使监听在跑,root 用户执行 lsnrctl status 也可能报错。
✅ 正确做法:
ps -ef | grep tnslsnr
su - oracle
lsnrctl status
Debian 上若用 systemd 管理监听:
systemctl status oracle-listener
如需启动:
systemctl start oracle-listener
lsnrctl 权限不足,99% 是因为没用 oracle 用户 + 环境变量不对
如果你愿意,可以把具体报错原文贴出来,我可以精准帮你定位。