温馨提示×

ubuntu oracle宕机为啥

小樊
47
2026-09-17 00:08:27
栏目: 云计算

“Ubuntu 上 Oracle 宕机”的原因很多,通常可以从系统层、Oracle 自身、资源、配置、运维操作几个方向排查。下面给你一个比较系统的总结,方便你对照定位。


一、系统和资源问题(最常见)

1. 内存不足(OOM)

  • Ubuntu 内存耗尽,触发 OOM Killer
  • Oracle 的 oracle / pmon / smon 进程被系统杀掉
  • 表现:
    • 数据库突然断开
    • dmesg 里有 Out of memory: Kill process

排查:

dmesg | grep -i "out of memory"
free -h

2. Swap 不足或使用异常

  • Oracle 对 swap 有要求(尤其 SGA 较大时)
  • swap 太小或没开 swap,内存一紧就宕

检查:

swapon -s
free -h

3. 磁盘空间满

常见满的地方:

  • /u01(Oracle 安装目录)
  • /tmp
  • 归档日志目录(archivelog)
  • 审计目录(adump)

后果:

  • 无法写 redo / audit
  • 数据库直接挂起或崩溃

检查:

df -h

4. Inode 耗尽

  • 小文件太多(审计、trace)
  • df 正常但 no space left on device

检查:

df -i

二、Oracle 自身问题

5. 实例崩溃(Instance Crash)

常见原因:

  • 断电 / 强制 kill
  • 控制文件 / 数据文件损坏
  • redo log 损坏

查看 alert 日志:

$ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log

6. 参数配置不合理

常见问题:

  • SGA / PGA 设置过大
  • processes 太小,连接爆了
  • filesystemio_options 配置错误

7. 监听器问题(误以为是宕机)

  • 数据库其实活着
  • 但 lsnrctl 挂了,连不上

检查:

lsnrctl status

三、Ubuntu / OS 层面问题

8. 内核参数不合理

Oracle 需要:

  • kernel.shmmax
  • kernel.shmall
  • fs.file-max
  • limits.conf 中 nofile / nproc

配置不对会导致:

  • 启动失败
  • 运行中段错误

9. 系统重启 / 停电 / 云平台异常

  • Ubuntu 自动更新重启
  • 云服务器被回收 / 迁移

检查:

uptime
last reboot

10. 文件系统损坏

  • 异常关机
  • ext4/xfs 错误

检查:

dmesg | grep -i error
journalctl -p err

四、人为 / 运维原因

11. 误杀进程

kill -9 oracle

12. 自动更新导致问题

Ubuntu 自动升级:

  • glibc
  • kernel
  • 影响 Oracle 运行

检查:

less /var/log/apt/history.log

五、快速自查清单(建议你照着做)

# 系统
uptime
free -h
df -h
df -i
dmesg | grep -i error
dmesg | grep -i oom

# Oracle
ps -ef | grep ora_
lsnrctl status
tail -200 $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log

六、如果你愿意,可以更精准定位

你可以补充:

  1. Oracle 版本(11g / 12c / 19c?)
  2. 单实例还是 RAC?
  3. 宕机时的现象(连不上 / 进程没了 / 服务器重启)
  4. alert 日志最后几十行内容

我可以直接帮你判断是哪种宕机 + 给修复方案。

0 踩