首页主机资讯centos oracle故障排查技巧

centos oracle故障排查技巧

时间2025-11-20 14:38:04发布访客分类主机资讯浏览650
导读: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
GitLab 在 CentOS 上如何进行故障排查 如何在centos上优化oracle查询性能

游客 回复需填写必要信息