Ubuntu 下 lsnrctl 恢复步骤
一 准备与环境检查
sudo su - oracle,确保以正确用户操作。which lsnrctl;若未找到,将 $ORACLE_HOME/bin 加入 PATH,例如:export PATH=$ORACLE_HOME/bin:$PATH。echo $ORACLE_HOME、echo $PATH,必要时在 ~/.bashrc 或 ~/.bash_profile 中设置并 source 使其生效。二 快速恢复流程
lsnrctl status,记录报错关键词(如 TNS-12541: No listener)。ps -ef | grep tnslsnr 找到进程号后 kill -9 <PID>。lsnrctl start。lsnrctl status,确认监听已启动并监听 TCP 1521 等预期端口。三 配置与实例联动检查
sqlplus / as sysdba,执行 select status from v$instance; 确认实例为 OPEN;必要时 startup 启动实例,观察监听是否自动注册服务。lsnrctl stop → lsnrctl start → lsnrctl status,确认 Services Summary 出现目标服务名。四 常见故障与修复要点
chmod 777 /var/tmp/.oracle 或 chown -R oracle:dba /var/tmp/.oracle 后重试。which lsnrctl 定位,修正 PATH 或使用绝对路径;必要时检查文件执行权限。ps -ef | grep LISTENER 若见多个 LISTENER 进程,kill -9 多余进程后 lsnrctl stop/start;长期方案为升级至 10.2.0.3+ 或在 listener.ora 中添加 SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF 并重启监听。