在 Debian 上,lsnrctl 是 Oracle Database 的监听管理工具,通常位于 $ORACLE_HOME/bin/lsnrctl。
“给权限”一般分 两种情况,下面分别说明。
如果提示:
bash: lsnrctl: command not found
或
Permission denied
Oracle 官方要求 必须用 oracle 用户运行:
su - oracle
然后执行:
lsnrctl status
chmod 750 $ORACLE_HOME/bin/lsnrctl
或(root 下):
chown oracle:oinstall $ORACLE_HOME/bin/lsnrctl
chmod 750 $ORACLE_HOME/bin/lsnrctl
正常安装后已经有权限,不要随便 chmod 777
usermod -aG dba,oinstall username
然后该用户执行:
su - oracle
lsnrctl start
编辑 sudo:
visudo
添加:
username ALL=(oracle) NOPASSWD: /u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl
使用:
sudo -u oracle lsnrctl status
如果监听端口是 1521(<1024):
✅ 正确方式:
su - oracle
lsnrctl start
lsnrctl: command not found
→ 没设置环境变量
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
TNS-01150: The listener reported an unexpected error
→ 权限或端口问题
✅ 用 oracle 用户
✅ 不要 777
✅ 普通用户用 sudo 或加 dba 组
如果你能贴出 具体报错信息,我可以直接帮你定位。