温馨提示×

Linux Oracle 故障排查方法是什么

小樊
35
2025-12-06 15:37:50
栏目: 云计算

Linux Oracle 故障排查方法

一 快速定位流程

  • 明确现象与影响范围:记录发生时间、持续时长、业务影响,同步观察CPU、内存、I/O、网络等系统指标与应用响应。
  • 收集与核对环境:确认ORACLE_HOME、ORACLE_SID、PATH等环境变量正确;检查实例与监听进程是否存在。
  • 查看告警与跟踪:优先检查alert.logtrace文件,获取首次报错与调用栈;必要时开启或回溯SQL Trace
  • 检查数据库状态与会话:通过sqlplus / as sysdba判断实例状态,结合v$session、v$lock、v$sql定位会话、锁与问题SQL。
  • 性能与资源诊断:生成AWR/ASH报告识别瓶颈;用系统工具(如top、vmstat、iostat)排查资源压力。
  • 网络与监听:用lsnrctl statustnspingnetstat验证监听与端口连通性,排查防火墙与超时设置。
  • 临时处置与根因修复:如kill 阻塞会话、调整参数或优化SQL;验证后设置长期监控与告警

二 常见故障场景与处置

场景 典型现象 快速检查 处置要点
连接数达到上限 新连接失败,报错ORA-12516/12518/12519 查会话与上限:SELECT COUNT(*) FROM v$session;SHOW PARAMETER processes/sessions; 释放INACTIVE会话;必要时调高参数(需重启);优化应用连接池
监听器问题 TNS-12541 无监听,TNS-12500 监听启动专用服务失败 lsnrctl status、`ps -ef grep tnslsnrtail -f $ORACLE_HOME/network/log/listener.lognetstat -an
网络超时 ORA-12170/TNS-12535 连接超时 pingtelnet IP 1521tnsping <服务名>;查sqlnet.ora超时 调整SQLNET.INBOUND_CONNECT_TIMEOUT/SEND_TIMEOUT/RECV_TIMEOUT;排查网络设备与重试策略
认证协议不匹配 ORA-28040 无匹配认证协议 查用户密码版本:SELECT username,password_versions FROM dba_users;;查sqlnet.ora 设置SQLNET.ALLOWED_LOGON_VERSION_SERVER;重置用户密码触发新版本
账号锁定或密码过期 ORA-01017 无效口令,ORA-28000 账户锁定 SELECT username,account_status,lock_date,expiry_date FROM dba_users; 解锁并重置密码;按需调整PROFILE的密码策略
数据库不可用 ORA-01034/ORA-27101 ORACLE not available sqlplus / as sysdba 查实例状态;lsnrctl status 查服务注册;查alert.log 启动实例;核对ORACLE_SID与参数文件;修复启动失败根因后重启

三 日志与诊断工具

  • 日志定位与查看
    • Oracle 告警与跟踪:$ORACLE_BASE/diag/rdbms///trace/alert_.log.trc/.trm;用tail -f实时跟踪。
    • 监听日志:$ORACLE_HOME/network/log/listener.log
    • 系统日志:/var/log/messages、syslog、dmesg
  • 命令行快速分析
    • grep "ORA-" alert.log 过滤错误;grep "ORA-" alert.log | awk '{print $NF}' | sort | uniq -c 统计错误频次;sed 做文本替换。
  • Oracle 内置诊断
    • ADR/ADRCI:统一诊断资料库,便于打包与检索告警、跟踪与转储。
    • AWR/ASH:定位Top SQL、等待事件、负载与争用;配合SQL Tuning Advisor优化。
    • SQL Trace + tkprof:格式化跟踪,识别高耗时/高逻辑读SQL。
    • LogMiner:解析重做日志/归档日志,还原事务与DML历史,用于审计与问题复盘。

四 系统资源与参数核查

  • 资源与空间
    • 系统层:用top/htop、vmstat、iostat观察CPU、内存、I/O;检查磁盘空间inode是否耗尽。
    • Oracle层:核对SGA/PGA与内存目标;关注表空间使用率归档/闪回区空间。
  • 连接与会话
    • 关注processes/sessions上限与当前连接数;按用户/机器/程序统计连接分布,排查连接泄漏与异常来源。
  • 网络与安全
    • 核对listener.ora/sqlnet.ora配置;确保1521端口与策略放行;必要时调整INBOUND_CONNECT_TIMEOUT等超时参数。
  • 集群与存储(如适用)
    • Grid Infrastructure:用crsctl check crs等命令检查集群资源与健康状态。

五 处置与验证

  • 临时措施:在根因未明前,优先kill 阻塞会话释放 INACTIVE 连接调整资源/参数限流降级,降低业务影响。
  • 根本修复:针对SQL/索引/统计信息/参数/配置/硬件等根因实施修复;必要时补丁/升级并回归测试。
  • 验证与预防:复测关键路径与报表;持续监控 AWR/ASH、会话与空间,完善告警阈值应急预案,形成事后复盘知识库

0