Ubuntu lsnrctl常见错误及解决方法
导读:Ubuntu 上 lsnrctl 常见错误与排查步骤 一 快速自检清单 确认以 oracle 用户操作,并在其环境中执行命令:su - oracle。 检查命令路径与环境变量:which lsnrctl、echo $PATH、echo $...
Ubuntu 上 lsnrctl 常见错误与排查步骤
一 快速自检清单
- 确认以 oracle 用户操作,并在其环境中执行命令:
su - oracle。 - 检查命令路径与环境变量:
which lsnrctl、echo $PATH、echo $ORACLE_HOME、echo $ORACLE_SID。 - 查看监听状态与日志:
lsnrctl status;日志默认在 $ORACLE_HOME/diag/tnslsnr//listener/alert/log.xml。 - 必要时重启监听:
lsnrctl stop→lsnrctl 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/.oracle 或 chmod 777 /var/tmp/.oracle |
| TNS-12555/TNS-12560/TNS-00525 | 启动监听时权限被拒(常见于 /var/tmp/.oracle 权限问题) | 同上,修复 /var/tmp/.oracle 的属主/权限后重启监听 |
| TNS-12514 | 监听未识别请求的服务;listener.ora 未静态注册 SID;数据库未向监听注册 | 在 listener.ora 的 SID_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.ora 与 sqlnet.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 stop→lsnrctl start→lsnrctl status验证服务与端口。
四 实用命令速查
- 环境变量设置(写入
~/.bashrc后source ~/.bashrc):
export ORACLE_HOME=/opt/oracle/product/11g
export ORACLE_SID=ORCL
export PATH=$PATH:$ORACLE_HOME/bin
- 监听管理:
lsnrctl status、lsnrctl start、lsnrctl stop - 数据库启动:
sqlplus / as sysdba→startup(必要时先shutdown immediate) - 日志定位:
$ORACLE_HOME/diag/tnslsnr/< hostname> /listener/alert/log.xml
五 仍无法解决时的定位思路
- 以 oracle 用户复核环境变量与路径,确保
which lsnrctl与echo $ORACLE_HOME输出合理。 - 从
lsnrctl status与 alert.log 获取首个报错点,优先处理如 TNS-12514/12555 等明确错误。 - 若怀疑系统权限,重点检查 /var/tmp/.oracle 的属主与权限。
- 复核网络连通与策略:本机
netstat -tlnp | grep 1521,服务器防火墙/云安全组是否放行 TCP 1521。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu lsnrctl常见错误及解决方法
本文地址: https://pptw.com/jishu/780781.html
