Linux Oracle故障快速排查清单
一 快速定位路径
sqlplus / as sysdba,查询SELECT status FROM v$instance;,确认是否为OPEN。alert_SID.log,路径可通过SELECT value FROM v$diag_info WHERE name='Diag Alert';获取;同时关注$ORACLE_BASE/diag/rdbms/<dbname>/<inst>/trace/下的trace与incident文件。lsnrctl status查看服务注册与端口,监听日志位于$ORACLE_HOME/network/log/listener.log。top/vmstat/iostat/df -h排查CPU、内存、I/O、磁盘空间;查看系统日志/var/log/messages、syslog、dmesg是否有与Oracle或资源相关的错误。ping与telnet <IP> 1521,应用端可用tnsping <服务名>验证TNS解析与连通性。二 常见故障与处置
| 症状与错误码 | 快速检查 | 立即处置 |
|---|---|---|
| 数据库不可用 ORA-01034 / ORA-27101 | sqlplus / as sysdba查实例状态;lsnrctl status看是否注册服务 |
若实例未启动:startup;若监听异常:lsnrctl stop → lsnrctl start;必要时查看alert_SID.log定位启动失败原因 |
| 监听问题 TNS-12541 / TNS-12500 | lsnrctl status;`ps -ef |
grep tnslsnr;netstat -an |
| 连接数打满 ORA-12516 / 12518 / 12519 | SELECT COUNT(*) FROM v$session;;SHOW PARAMETER processes;、SHOW PARAMETER sessions;;按用户/模块统计连接 |
终止阻塞或长时间空闲会话:ALTER SYSTEM KILL SESSION 'sid,serial#'; 适度调大processes/sessions(需重启);应用侧优化连接池 |
| 连接超时 ORA-12170 / TNS-12535 | ping、telnet <IP> 1521、tnsping <服务名>;检查sqlnet.ora超时参数 |
调整SQLNET.INBOUND_CONNECT_TIMEOUT、SQLNET.SEND_TIMEOUT、SQLNET.RECV_TIMEOUT;排查网络设备/防火墙 |
| 认证协议不匹配 ORA-28040 | 查询用户密码版本:SELECT username, password_versions FROM dba_users WHERE username='xxx';;检查sqlnet.ora |
服务端设置SQLNET.ALLOWED_LOGON_VERSION_SERVER=11(按客户端兼容度设置);必要时重置用户密码以生成新版本 |
| 账号锁定/密码错误 ORA-01017 / ORA-28000 | SELECT username, account_status, lock_date, expiry_date FROM dba_users WHERE username='xxx';;查看密码策略 |
解锁:ALTER USER xxx ACCOUNT UNLOCK; 重置密码;按需放宽PASSWORD_LIFE_TIME等策略 |
三 日志与诊断命令速查
SELECT name, value FROM v$diag_info;(关注Diag Alert/Trace)。tail -n 200 $ORACLE_BASE/diag/rdbms/<db>/<inst>/trace/alert_<inst>.log | egrep -i "ORA-|err|fail"。$ORACLE_BASE/diag/rdbms/<db>/<inst>/trace/<inst>_ora_<pid>.trc 与对应.trm。lsnrctl status;tail -f $ORACLE_HOME/network/log/listener.log;核对$ORACLE_HOME/network/admin/listener.ora。ping、telnet <IP> 1521、tnsping <服务名>;firewall-cmd --list-all检查防火墙。SELECT COUNT(*) FROM v$session;;SHOW PARAMETER processes;、SHOW PARAMETER sessions;SELECT username, status, COUNT(*) FROM v$session GROUP BY username, status ORDER BY 3 DESC;SELECT machine, program, COUNT(*) FROM v$session GROUP BY machine, program ORDER BY 3 DESC;tkprof分析执行计划与耗时。四 高频根因与预防要点
SQLNET.ALLOWED_LOGON_VERSION_SERVER。dba_users与dba_profiles,必要时解锁与调整策略。