Linux Oracle 故障排查方法
一 快速定位流程
二 常见故障场景与处置
| 场景 | 典型现象 | 快速检查 | 处置要点 |
|---|---|---|---|
| 连接数达到上限 | 新连接失败,报错ORA-12516/12518/12519 | 查会话与上限:SELECT COUNT(*) FROM v$session;、SHOW PARAMETER processes/sessions; |
释放INACTIVE会话;必要时调高参数(需重启);优化应用连接池 |
| 监听器问题 | TNS-12541 无监听,TNS-12500 监听启动专用服务失败 | lsnrctl status、`ps -ef |
grep tnslsnr、tail -f $ORACLE_HOME/network/log/listener.log、netstat -an |
| 网络超时 | ORA-12170/TNS-12535 连接超时 | ping、telnet IP 1521、tnsping <服务名>;查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与参数文件;修复启动失败根因后重启 |
三 日志与诊断工具
grep "ORA-" alert.log 过滤错误;grep "ORA-" alert.log | awk '{print $NF}' | sort | uniq -c 统计错误频次;sed 做文本替换。四 系统资源与参数核查
crsctl check crs等命令检查集群资源与健康状态。五 处置与验证