Linux Oracle数据库故障排查方法
一 快速定位与基础检查
二 常见故障场景与处理要点
| 症状 | 高频原因 | 快速检查 | 处理要点 |
|---|---|---|---|
| 实例无法启动 | 参数/内存不当、控制文件/数据文件异常、权限/路径错误 | alert.log 报错、v$parameter 关键参数、文件系统权限 | 依据日志修复参数或文件;必要时从备份恢复控制文件/数据文件;校正目录权限与所有者 |
| ORA-12541 TNS:no listener | 监听未起或配置错误 | lsnrctl status、listener.ora 与主机名/IP | 启动监听;核对 listener.ora/tnsnames.ora 中 HOST 与服务器一致 |
| sqlplus/lsnrctl: command not found | 环境变量未加载、未使用登录式切换 | echo $ORACLE_HOME、which sqlplus | 使用 su - oracle;在 ~/.bash_profile 中设置 ORACLE_HOME、ORACLE_SID、PATH 并 source 生效 |
| ORA-00054 resource busy | 对象被占用/锁等待 | v$locked_object、v$session | 定位会话并 alter system kill session ‘SID,SERIAL#’ immediate; |
| ORA-28002 密码过期 | 口令生命周期策略 | dba_users.account_status、dba_profiles | 调整 PROFILE 的 PASSWORD_LIFE_TIME(如设为 UNLIMITED),并解锁/重置过期账号 |
| ORA-00845 MEMORY_TARGET not supported | /dev/shm 小于参数值 | df -h /dev/shm、show parameter memory_target | 增大 /dev/shm(如 mount -t tmpfs shmfs -o size=… /dev/shm)并写入 /etc/fstab 持久化 |
| 归档日志/数据文件丢失 | 介质故障、误删、归档中断 | alert.log、v$recovery_file_status | 具备备份时用 RMAN 恢复;无备份时评估 不完全恢复/LogMiner 抽取逻辑数据 |
| 性能急剧劣化 | SQL 执行计划退化、锁争用、I/O 瓶颈 | AWR/ASH、v$session/v$lock/v$sql、OS 监控 | 抓取 AWR/ASH 定位 Top SQL 与等待事件;优化 SQL、处理锁、调参或扩容 I/O |
三 深入诊断与性能问题定位
四 数据恢复与回滚策略
五 应急与预防建议