Linux Oracle故障排查步骤
导读:Linux Oracle故障排查步骤 一 快速定位与信息收集 明确现象与影响范围:记录故障的发生时间、持续时长、影响用户/应用、是否有报错码(如 ORA- 错误)。 检查实例存活:执行 ps -ef | grep pmon 观察对应 OR...
Linux Oracle故障排查步骤
一 快速定位与信息收集
- 明确现象与影响范围:记录故障的发生时间、持续时长、影响用户/应用、是否有报错码(如 ORA- 错误)。
- 检查实例存活:执行 ps -ef | grep pmon 观察对应 ORACLE_SID 的 pmon 进程是否存在。
- 查看告警日志:优先检查 $ORACLE_BASE/diag/rdbms///trace/alert_.log,从最近时间向上追溯首次报错。
- 系统层面取证:查看 /var/log/messages、syslog、dmesg,关注 OOM、磁盘满、设备异常等系统事件。
- 监听状态:执行 lsnrctl status 确认监听是否运行、端口与 SID/SERVICE 注册情况。
- 环境变量:确认 ORACLE_HOME、ORACLE_SID、PATH 等已正确设置,避免命令不可用或连错实例。
二 实例无法启动的专项排查
- 以管理员身份登录:sqlplus / as sysdba,依次尝试 startup nomount → alter database mount → alter database open,定位停在哪一阶段。
- 共享内存/信号量:检查与调整内核参数(示例值,需结合内存与实例规模):
- kernel.shmmax(如 8GB)、kernel.shmall(如 2097152 页,4KB 页则约 8GB)
- kernel.sem(如 250 32000 100 128)
临时生效:sysctl -w;永久生效:写入 /etc/sysctl.conf 后执行 sysctl -p。
- OOM 与资源:free -m 查看可用内存;dmesg | grep -i oom 检查是否被 OOM Killer 终止。
- 清理残留 IPC(仅在确认实例未运行时):
- ipcs -m | grep oracle | awk ‘{ print $2} ’ | xargs -n 1 ipcrm -m
- ipcs -s | grep oracle | awk ‘{ print $2} ’ | xargs -n 1 ipcrm -s
- 启动后验证:ps -ef | grep pmon;sqlplus 中 select instance_name, status from v$instance; 期望状态为 OPEN。
三 监听与网络连接排查
- 监听基本操作:lsnrctl status(查看服务/端口/注册情况)、lsnrctl start/stop(启停监听)。
- 端口冲突:netstat -tlnp | grep 1521 检查 1521 是否被占用;必要时释放占用进程或更换端口并同步客户端配置。
- 配置与解析:核对 $ORACLE_HOME/network/admin/listener.ora、tnsnames.ora 的主机名、端口、SID/SERVICE 是否一致;必要时使用 Net Configuration Assistant 重新配置本地网络服务名。
- 常见错误速查:
- TNS-12541/TNS-12560(无监听/协议适配器错误):多为监听未起或端口/协议配置问题。
- ORA-12514(监听未注册服务):数据库未注册到监听,检查数据库是否启动到 OPEN、local_listener 参数与监听配置是否匹配。
- ORA-12154(无法解析服务名):客户端 tnsnames.ora 服务名配置错误或域名解析问题。
四 性能与阻塞问题定位
- 快速性能画像:生成 AWR/ASH 报告,识别 Top SQL、CPU/IO 瓶颈、等待事件。
- 会话与锁:查询 v$session、v$lock、v$sql 等视图,定位长事务、阻塞会话与锁等待链。
- SQL 诊断:对问题 SQL 开启 SQL Trace 并用 tkprof 分析执行计划与耗时分布。
- 临时缓解与根治:在定位前可先行 kill 阻塞会话、限流或调整资源;随后优化 SQL、索引与参数,防止复发。
五 常见错误与修复要点
- ORA-27101 / ORA-27102 / ORA-04031(共享内存/内存不足):调大 SGA/PGA 或系统 shmmax/shmall,释放内存,必要时重启;检查 dmesg 是否有 OOM。
- ORA-12541 / TNS-12560(监听未起/协议适配器错误):启动监听、排查端口占用、核对协议与主机配置。
- ORA-12514(监听未注册服务):确保数据库已 OPEN,核对 local_listener 与 listener.ora 的 SID/SERVICE 映射。
- ORA-12154(无法解析服务名):修正客户端 tnsnames.ora 的服务名或域名解析。
- ORA-01000(超出打开游标最大数):增大 open_cursors,排查未关闭游标的程序逻辑。
- ORA-1034(ORACLE不可用):数据库未打开,执行 startup 打开实例。
- 空间与归档问题:检查 归档日志/闪回区 使用率,必要时用 RMAN 清理过期归档后再 open。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Oracle故障排查步骤
本文地址: https://pptw.com/jishu/755773.html
