centos oracle故障排查技巧
导读:CentOS 上 Oracle 故障排查技巧 一 快速定位路径与日志 定位告警与跟踪文件:在 SQL*Plus 以 / as sysdba 执行 查看 ADR Base/Diag Trace/Alert:select name,valu...
CentOS 上 Oracle 故障排查技巧
一 快速定位路径与日志
- 定位告警与跟踪文件:在 SQL*Plus 以 / as sysdba 执行
- 查看 ADR Base/Diag Trace/Alert:select name,value from v$diag_info;
- 典型路径:/u01/app/oracle/diag/rdbms/< db_name> /< db_name> /trace/alert_< db_name> .log
- 查错误关键字:grep -i “ORA-” $ADR_HOME/trace/alert_*.log
- 系统层面日志:
- 操作系统消息:tail -n 200 /var/log/messages | grep -i oracle
- 用户邮件日志(若有):tail -n 200 /var/mail/oracle
- 监听日志:
- 常见位置:$ORACLE_HOME/network/log/listener.log
- 状态与日志查看:lsnrctl status、lsnrctl service
- SQL*Plus 自身提示与日志:
- 若提示找不到消息文件(如 SP2-0667/0750),多为 ORACLE_HOME 未正确设置
- 可用完整路径执行:/u01/app/oracle/product/19.3/dbhome_1/bin/sqlplus / as sysdba 以上路径与命令可快速确认“发生在哪、因何发生”,是后续修复的关键起点。
二 连接类故障排查
- 网络连通性:
- ping < db_host> ;测试端口:telnet < db_host> 1521
- 若不通,检查路由、ACL、物理链路
- 防火墙放行:
- 查看状态:systemctl status firewalld
- 放行端口:firewall-cmd --permanent --add-port=1521/tcp & & firewall-cmd --reload
- 监听与实例状态:
- 监听:lsnrctl status;必要时 lsnrctl start
- 实例:sqlplus / as sysdba → startup(若未启动)
- 客户端配置:
- 核对 $ORACLE_HOME、$PATH、$ORACLE_SID
- 检查 tnsnames.ora / listener.ora 的主机、端口、服务名/SID 一致性
- 连通性测试:tnsping < tns_alias>
- SELinux:
- 临时排查可 setenforce 0;长期方案请配置正确的 SELinux 策略
- 常见现象与对策:
- “TNS: 无监听程序” → 监听未起或端口不通
- “TNS: 无法解析服务名” → tnsnames.ora 配置错误或 DNS/主机名问题
- “权限不足/口令错误” → 核对账户、口令与账户状态 以上步骤覆盖从网络到监听再到实例的端到端连通性验证。
三 实例与启动类故障
- 找不到参数文件(ORA-01078/LRM-00109):
- 确认 ORACLE_SID 与目录 $ORACLE_HOME/dbs/init.ora 一致
- 若使用 SPFILE,确认 spfile.ora 存在或能由 PFILE 创建
- 共享内存创建失败(ORA-27125 / Linux Error 28):
- 调整内核参数(示例):kernel.shmall、kernel.shmmax;并确保 /dev/shm 容量充足
- 控制文件异常(ORA-00205):
- 以 nomount 启动后检查控制文件位置:show parameter control_files
- 从备份恢复或重建控制文件
- 系统资源不足(ORA-27100/27157 等):
- 检查 /var/log/messages 与跟踪文件中的资源报错
- 释放内存/交换、调整 SGA/PGA、处理僵尸进程
- 自动任务报错(如 ORA-12012/ORA-20001 周期性出现):
- 已知 Bug 22879263 在部分版本触发,可临时执行:EXEC dbms_stats.init_package();
- 长期方案为升级至包含修复的版本(如 12.2.0.1.0 及以上) 以上为高频启动/实例类问题及可操作修复路径。
四 SQL*Plus 与客户端常见报错
- 命令无反应或异常退出:
- 检查 ORACLE_HOME/PATH;用完整路径执行 sqlplus
- 确认客户端与数据库版本兼容
- 登录失败或权限不足:
- 核对用户名/口令、账户状态与权限
- 远程连接确保监听已注册正确服务名/SID
- 输出格式与诊断:
- 调整格式:COLUMN col FORMAT A20;SET LINESIZE/PAGESIZE/TIMING ON
- 将输出落地:SPOOL output.txt … SPOOL OFF
- 无法找到消息文件(SP2-0667/0750):
- 多为 ORACLE_HOME 指向错误或未生效,source 环境变量后重试 这些技巧可快速恢复 SQL*Plus 可用性并提升定位效率。
五 高频错误速查表
| 症状 | 快速检查 | 常见根因 | 处理要点 |
|---|---|---|---|
| TNS: 无监听程序 | lsnrctl status;telnet 主机 1521 | 监听未起/端口未放行 | lsnrctl start;firewall-cmd 放行 1521 |
| TNS: 无法解析服务名 | tnsping 别名;核对 tnsnames.ora | 别名/主机/端口/SID 不一致 | 修正 tnsnames.ora 与 DNS/主机名 |
| ORA-01078/LRM-00109 | echo $ORACLE_SID;ls $ORACLE_HOME/dbs | 参数文件缺失或 SID 不符 | 对齐 ORACLE_SID 与 init/spfile 文件 |
| ORA-27125/28 | ipcs -m;free -m;df -h /dev/shm | 共享内存/内存不足或参数过小 | 调整 kernel.shmall/shmmax;扩容 /dev/shm |
| ORA-00205 | show parameter control_files | 控制文件丢失/路径错误 | 从备份恢复或重建控制文件 |
| ORA-12012/ORA-20001 周期性 | grep ORA- alert.log;查 trc | Bug 22879263 | 执行 EXEC dbms_stats.init_package(); 或升级版本 |
| 以上条目可作为现场“第一响应”清单,先恢复业务,再回溯根因。 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos oracle故障排查技巧
本文地址: https://pptw.com/jishu/752057.html
