温馨提示×

Ubuntu lsnrctl常见错误及解决方法

小樊
36
2025-12-24 23:51:10
栏目: 智能运维

Ubuntu 上 lsnrctl 常见错误与排查步骤

一 快速自检清单

  • 确认以 oracle 用户操作,并在其环境中执行命令:su - oracle
  • 检查命令路径与环境变量:which lsnrctlecho $PATHecho $ORACLE_HOMEecho $ORACLE_SID
  • 查看监听状态与日志:lsnrctl status;日志默认在 $ORACLE_HOME/diag/tnslsnr//listener/alert/log.xml
  • 必要时重启监听:lsnrctl stoplsnrctl start,再 lsnrctl status 复核。

二 常见错误与对应解决

症状 可能原因 解决要点
command not found 未安装 Oracle 客户端/服务端;PATH 未包含 $ORACLE_HOME/bin;命令拼写错误 安装相应组件;将 export PATH=$PATH:$ORACLE_HOME/bin 写入 ~/.bashrc/etc/profile 并执行 source;用 which lsnrctl 校验
权限不足/Operation not permitted 当前用户非 oracle;或 /var/tmp/.oracle 权限/属主异常 切换到 oracle 用户;执行 ls -ld /var/tmp/.oracle,必要时 chown -R oracle:dba /var/tmp/.oraclechmod 777 /var/tmp/.oracle
TNS-12555/TNS-12560/TNS-00525 启动监听时权限被拒(常见于 /var/tmp/.oracle 权限问题) 同上,修复 /var/tmp/.oracle 的属主/权限后重启监听
TNS-12514 监听未识别请求的服务;listener.ora 未静态注册 SID;数据库未向监听注册 listener.oraSID_LIST_LISTENER 中静态注册数据库 SID;确保数据库实例启动后由 PMON 动态注册;重启监听再测
ORA-12162 ORACLE_SID 未设置或设置错误 执行 export ORACLE_SID=<你的SID>(写入 ~/.bashrc 持久化),再运行 sqlplus / as sysdba
无法远程连接 1521 监听未启动;listener.ora 端口配置错误;Ubuntu 防火墙/云安全组未放行 lsnrctl start 并用 lsnrctl status 确认监听端口为 1521;核对 listener.ora 中的 (PORT=1521);开放防火墙/安全组策略

三 关键配置文件与示例

  • 建议将 listener.orasqlnet.ora 放在 $ORACLE_HOME/network/admin
  • 静态注册示例(在已有配置基础上补充 SID_LIST_LISTENER):
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname_or_ip)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = ORCL)            # 替换为你的 SID
      (ORACLE_HOME = /opt/oracle/product/11g)  # 替换为你的 ORACLE_HOME
    )
  )
  • 修改后执行:lsnrctl stoplsnrctl startlsnrctl status 验证服务与端口。

四 实用命令速查

  • 环境变量设置(写入 ~/.bashrcsource ~/.bashrc):
export ORACLE_HOME=/opt/oracle/product/11g
export ORACLE_SID=ORCL
export PATH=$PATH:$ORACLE_HOME/bin
  • 监听管理:lsnrctl statuslsnrctl startlsnrctl stop
  • 数据库启动:sqlplus / as sysdbastartup(必要时先 shutdown immediate
  • 日志定位:$ORACLE_HOME/diag/tnslsnr/<hostname>/listener/alert/log.xml

五 仍无法解决时的定位思路

  • oracle 用户复核环境变量与路径,确保 which lsnrctlecho $ORACLE_HOME 输出合理。
  • lsnrctl statusalert.log 获取首个报错点,优先处理如 TNS-12514/12555 等明确错误。
  • 若怀疑系统权限,重点检查 /var/tmp/.oracle 的属主与权限。
  • 复核网络连通与策略:本机 netstat -tlnp | grep 1521,服务器防火墙/云安全组是否放行 TCP 1521

0