centos

centos oracle故障如何排查

小樊
33
2025-12-23 09:02:54
栏目: 云计算

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.ora 或 spfile.ora 是否存在 从备份 pfile 恢复至 dbs;修正属主属组;startup nomount 后用 create spfile from pfile 重建 spfile
SPFILE 被手工编辑损坏 启动报 ORA-27046 用 strings spfile 导出参数到 init.ora;删除损坏 spfile;以 pfile 启动后 create spfile from pfile
ORA-00205 控制文件识别失败 告警日志;init.ora 的 control_files 路径 修正 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 且对外可达

三、系统化排查流程

  1. 服务与进程:确认无同名实例冲突(ps -ef | grep ora_pmon),必要时 shutdown immediate → startup。
  2. 监听链路:lsnrctl status → 若异常,lsnrctl start;核对 listener.ora 与 tnsnames.ora 的 HOST/PORT/SERVICE_NAME 一致;变更后 lsnrctl reload。
  3. 告警与跟踪:进入 $DIAG_TRACE 查看 alert_.log 的首个报错与时间点,再打开对应 .trc 精确定位;必要时查 log.xml 做时间线回溯。
  4. 参数与文件:若报参数文件错误,检查 $ORACLE_HOME/dbs/init.ora 或 spfile;SPFILE 损坏用 strings→init 启动→重建 spfile;路径错误(如 <ORACLE_BASE> 占位符、control_files 不存在)按实际修正。
  5. 系统资源与 OS 设置:检查共享内存/信号量(ipcs -sma;必要时设置监控 cron);若为 CentOS/RHEL 7.2 且出现 IPC 被移除错误,设置 RemoveIPC=no 并重启 systemd-logind。
  6. 网络连通:netstat -tlnp | grep 1521;服务器放行 1521;客户端 tnsping/sqlplus 直连测试。

四、应急与预防建议

0
看了该问题的人还看了