温馨提示×

debian lsnrctl权限不足咋办

小樊
41
2026-09-03 13:34:09
栏目: 智能运维

在 Debian 上遇到 lsnrctl 权限不足(Permission denied),通常不是 Linux 文件权限本身,而是 Oracle 监听器的运行/管理权限模型 导致的。下面按常见场景给你解决方案。


一、最常见原因 & 解决办法

✅ 1. 必须用 oracle 用户运行

lsnrctl 不能被 root 直接运行,否则会报权限不足或无法管理 listener。

su - oracle
lsnrctl status

注意:su - oracle(带横线)会加载 Oracle 环境变量


✅ 2. 确认环境变量正确(oracle 用户下)

echo $ORACLE_HOME
echo $ORACLE_SID

如果没有:

export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH

二、监听器文件权限问题

1. listener.ora / sqlnet.ora 权限

检查:

lsnrctl start
# 报错 Permission denied

查看文件:

ls -l $ORACLE_HOME/network/admin/listener.ora

正确权限示例:

-rw-r--r--  oracle oinstall listener.ora

修复:

chown oracle:oinstall $ORACLE_HOME/network/admin/*.ora
chmod 644 $ORACLE_HOME/network/admin/*.ora

三、监听器已存在但无法管理

场景

TNS-01190: The user is not authorized to execute the requested listener command

原因

监听器是由 另一个用户(或 root)启动的

解决

  1. 查看监听器进程
ps -ef | grep tnslsnr
  1. 如果非 oracle 用户启动:
kill -9 <pid>
su - oracle
lsnrctl start

四、使用 root 管理监听(不推荐但可配置)

如果你 必须用 root 管理 listener

方法:授权

chown root:oinstall $ORACLE_HOME/bin/lsnrctl
chmod 755 $ORACLE_HOME/bin/lsnrctl

⚠️ 不推荐,存在安全隐患


五、systemd 场景(Debian + Oracle)

如果是 systemd 启动:

systemctl status oracle-listener

确保 service 中:

User=oracle

六、快速排查清单 ✅

✔ 是否 su - oracle
ORACLE_HOME 是否正确
✔ listener 是否 oracle 启动
.ora 文件权限是否正确
✔ 是否有多个 listener 冲突


如果你愿意,可以贴一下:

  • 报错完整信息
  • whoami
  • ps -ef | grep tns

我可以直接帮你定位是哪一类权限问题。

0