在 Debian 上,lsnrctl 是 Oracle Database 的监听控制工具,通常位于 $ORACLE_HOME/bin/lsnrctl。它的“权限怎么设”一般涉及 3 个方面:
lsnrctl 通常是 Oracle 安装时生成的,正确权限应为:
ls -l $ORACLE_HOME/bin/lsnrctl
正常权限示例:
-rwxr-x--x 1 oracle oinstall ... lsnrctl
设置方法(如果你改坏了):
chown oracle:oinstall $ORACLE_HOME/bin/lsnrctl
chmod 750 $ORACLE_HOME/bin/lsnrctl
✅ 只能 oracle 用户或 oinstall 组执行
❌ 不要设成 777
lsnrctl 必须用 Oracle 软件属主用户运行(通常是 oracle):
su - oracle
lsnrctl status
如果你用 root 或其他用户运行,会报类似:
TNS-01106: Message ... not found
Permission denied
✅ 正确做法:
sudo -u oracle lsnrctl start路径通常在:
$ORACLE_HOME/network/admin/
权限建议:
chown oracle:oinstall listener.ora tnsnames.ora
chmod 640 listener.ora
例如:
$ORACLE_BASE/diag/tnslsnr/
权限:
chown -R oracle:oinstall $ORACLE_BASE/diag
chmod -R 750 $ORACLE_BASE/diag
否则会出现:
TNS-12547: TNS:lost contact
如果你用 systemd 管理监听:
[Service]
User=oracle
Group=oinstall
❌ 不要写 User=root
| 问题 | 原因 |
|---|---|
| Permission denied | 非 oracle 用户执行 |
| Message not found | ORACLE_HOME 不对 |
| TNS-01106 | 权限或环境变量错误 |
| 监听起不来 | 日志目录无写权限 |
oracle:oinstall
750 (bin)
640 (ora 文件)
750 (diag)
如果你愿意,可以告诉我:
我可以给你精确命令。