CentOS 上 Oracle 故障排查清单
一、快速定位路径与状态
二、常见故障与处理要点
| 症状 | 关键检查 | 处理要点 |
|---|---|---|
| ORA-12541 无监听程序 | lsnrctl status;/etc/hosts 主机名与 IP;listener.ora 的 HOST/PORT | 启动监听 lsnrctl start;修正 hosts 与 listener.ora 的 HOST 一致;必要时 netca 重建监听 |
| ORA-12505 监听程序当前不知道 SID | lsnrctl status 的 Services 列表;数据库 service_name | 在 listener.ora 的 SID_LIST_LISTENER 中补充 SID_DESC;或确保数据库已注册服务(动态注册通常无需静态注册) |
| ORA-01078 / LRM-00109 参数文件无法打开 | $ORACLE_HOME/dbs/init |
从备份 pfile 恢复至 dbs;修正属主属组;startup nomount 后用 create spfile from pfile 重建 spfile |
| SPFILE 被手工编辑损坏 | 启动报 ORA-27046 | 用 strings spfile 导出参数到 init |
| ORA-00205 控制文件识别失败 | 告警日志;init |
修正 control_files 为实际存在的绝对路径;必要时从备份恢复控制文件 |
| ORA-09925 无法创建审计文件 | $ORACLE_BASE 指向不存在或只读 | 创建目录并校正权限;确保挂载为读写;必要时 startup nomount 后修正 diagnostic_dest |
| ORA-27157/27300/27301/27302 IPC 被移除 | /var/log/messages 与 trace 中的 semop/Identifier removed | CentOS/RHEL 7.2 默认 RemoveIPC=yes 会清理 IPC,导致数据库异常;在 /etc/systemd/logind.conf 设置 RemoveIPC=no,执行 systemctl daemon-reload && systemctl restart systemd-logind,必要时重启 OS |
| 客户端连不上(网络/端口) | 服务器防火墙;监听端口 | firewall-cmd --add-port=1521/tcp --permanent && firewall-cmd --reload;确认监听端口为 1521 且对外可达 |
三、系统化排查流程
四、应急与预防建议