首页主机资讯Linux Oracle故障诊断思路

Linux Oracle故障诊断思路

时间2025-12-22 20:48:03发布访客分类主机资讯浏览1215
导读:Linux Oracle故障诊断思路 一 快速定位与信息收集 明确现象与影响范围:记录故障的发生时间、持续时长、影响业务/会话比例,优先抓取当前CPU、内存、I/O、网络等系统指标与应用响应时间。 查看告警与跟踪:优先检查数据库alert...

Linux Oracle故障诊断思路

一 快速定位与信息收集

  • 明确现象与影响范围:记录故障的发生时间持续时长影响业务/会话比例,优先抓取当前CPU、内存、I/O、网络等系统指标与应用响应时间。
  • 查看告警与跟踪:优先检查数据库alert.log与对应trace文件,定位首次报错与关键堆栈;ADR 统一目录通常为:$ORACLE_BASE/diag/rdbms/< db_name> /< instance_name> /trace/alert_< instance_name> .log,可用 SQL 查询:show parameter diagnostic_dest; select value from v$diag_info where name=‘Diag Trace’; ;必要时用 adrci 浏览与打包日志。
  • 操作系统侧线索:同步检查 /var/log/messages、syslog、dmesg,关注与 Oracle 进程、磁盘、内存、OOM、设备掉线等相关的告警。

二 分层排查路径

  • 连接与会话
    • 监听器:执行 lsnrctl status,查看服务注册与端口;异常时检查 $ORACLE_HOME/network/log/listener.log,必要时 lsnrctl stop/start;确认 1521 端口与防火墙策略。
    • 连通性:使用 tnsping < 服务名> ;网络测试用 ping/telnet 1521;排查超时可调整 sqlnet.oraSQLNET.INBOUND_CONNECT_TIMEOUT / SQLNET.SEND_TIMEOUT / SQLNET.RECV_TIMEOUT
    • 连接数:关注 ORA-12516/12518/12519,统计会话与上限:SELECT COUNT(*) FROM v$session; SHOW PARAMETER processes; SHOW PARAMETER sessions; 并按用户/模块聚合定位异常来源。
    • 认证与账户:处理 ORA-28040(认证协议不匹配)ORA-01017/ORA-28000(密码错误/账户锁定),检查 SQLNET.ALLOWED_LOGON_VERSION_SERVER 与用户状态/策略。
  • 实例可用性
    • 实例状态:以 sqlplus / as sysdba 登录,执行 SELECT status FROM v$instance; ;若不可用,优先查看 alert.log 的启动失败原因(参数、控制文件、数据文件、归档/空间等)。
  • 性能与阻塞
    • 工作负载与等待:生成 AWR/ASH 报告,识别 Top SQL、CPU/IO/锁等待热点;结合 v$session、v$lock、v$sql 定位阻塞链与会话状态。
    • SQL 诊断:对可疑 SQL 开启 SQL Trace 并用 tkprof 分析,验证计划与成本。

三 常见故障场景与要点

场景 关键线索 快速验证 处理要点
新连接被拒绝(ORA-12516/12518/12519) 应用报连接拒绝/超时 统计会话与上限、按用户/模块聚合 临时 kill 空闲/异常会话;优化连接池;必要时调高 processes/sessions(需重启)
监听不可用(TNS-12541) 应用无法连库 lsnrctl status、listener.log、端口占用 重启监听;核对 listener.ora;排查防火墙/端口
连接超时(ORA-12170/TNS-12535) 偶发或跨网段慢 ping/telnet/tnsping、sqlnet.ora 超时 调整 inbound_connect/send/recv 超时;检查网络设备/ACL
认证失败(ORA-28040/ORA-01017/ORA-28000) 升级/客户端混用后集中报错 查用户状态与密码版本、sqlnet 配置 设置 SQLNET.ALLOWED_LOGON_VERSION_SERVER;解锁/重置密码;必要时客户端升级
数据库不可用(ORA-01034/ORA-27101) 实例未启动或共享内存异常 sqlplus 查状态、alert.log 首错 依据 alert 修复根因(参数/文件/归档/空间),再启动实例
归档空间满(ORA-00257) 写入归档失败、日志切换报错 查归档目录使用率与磁盘 清理过期归档、扩容磁盘或调整归档路径;必要时临时切换至可用磁盘

四 数据保护与恢复要点

  • 日志优先:任何变更前先备份 alert.log、当前 controlfile、参数文件(spfile/pfile) 与关键 trace,便于回滚与复盘。
  • 空间与 I/O:快速巡检 $ORACLE_BASE、$ORACLE_HOME、归档目录、数据文件所在文件系统 的可用空间与健康状态,避免因 磁盘满/I/O 错误 引发级联故障。
  • 备份可用性:确认 RMAN 备份集/归档日志的可用性保留策略;在恢复前先在测试环境演练关键步骤,减少二次风险。
  • 变更可控:参数调整、对象重建、版本升级等操作遵循变更窗口回退方案,变更后持续观察 alert.log 与监控指标至少一个业务周期

五 常用命令与 SQL 速查

  • 日志与诊断
    • 查看诊断根与路径:show parameter diagnostic_dest;
    • 定位 alert 与 trace:select value from v$diag_info where name=‘Diag Alert’; / ‘Diag Trace’;
    • 打包与查看日志:adrci> show alert; adrci> show trace; (必要时 adrci> pack)
  • 监听与网络
    • 监听状态与日志:lsnrctl status;查看 $ORACLE_HOME/network/log/listener.log
    • 连通性测试:tnsping < 服务名> telnet 1521;必要时调整 sqlnet.ora 超时参数
  • 会话与连接
    • 会话与上限:SELECT COUNT(*) FROM v$session; SHOW PARAMETER processes; SHOW PARAMETER sessions;
    • 按用户/模块聚合:SELECT username, status, COUNT(*) FROM v$session GROUP BY username, status;
    • 按主机/程序聚合:SELECT machine, program, COUNT(*) FROM v$session GROUP BY machine, program;
    • 终止阻塞会话:ALTER SYSTEM KILL SESSION ‘sid,serial#’;
  • 性能与 SQL
    • 生成 AWR/ASH 报告(典型间隔 1 小时/10 分钟),定位 Top SQL 与等待事件
    • SQL Trace 与格式化:tkprof 分析执行计划与耗时分布

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux Oracle故障诊断思路
本文地址: https://pptw.com/jishu/777755.html
Debian为何突然抛弃了它 Linux Oracle最佳实践分享

游客 回复需填写必要信息