温馨提示×

ubuntu oracle为何慢

小樊
32
2026-10-19 11:12:39
栏目: 云计算

在 Ubuntu 上运行 Oracle 数据库感觉“慢”,通常不是 Ubuntu 本身的问题,而是配置、资源、I/O、参数等多方面因素导致的。下面按常见原因分类说明,并给出排查和优化建议。


一、最常见原因

1. 内存不足 / SWAP 频繁使用

Oracle 非常吃内存,尤其是 SGA、PGA。

表现

  • 查询慢
  • 系统卡顿
  • top 中 si/wa 高
  • 大量 SWAP 使用

检查

free -h
swapon --show
top

建议

  • 物理内存 ≥ 4G(生产建议 8G+)
  • SGA + PGA < 物理内存的 70%
  • 关闭或减小 SWAP 使用倾向:
sysctl vm.swappiness=10

2. 磁盘 I/O 慢(最常见!)

Ubuntu 常在 虚拟机 / 云盘 / 机械盘 上跑 Oracle。

表现

  • 启动慢
  • 查询等待明显
  • iostat 中 %util 接近 100%

检查

iostat -x 1

建议

  • 使用 SSD
  • 数据文件、redo、undo 分盘
  • 不要用 NFS 跑数据文件
  • 云服务器选高 IOPS 磁盘

3. Oracle 参数未优化(默认配置极保守)

Ubuntu 上手动安装的 Oracle 常使用默认参数。

重点参数

SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;
SHOW PARAMETER processes;

建议示例(8G 内存)

ALTER SYSTEM SET sga_target=3G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=SPFILE;
ALTER SYSTEM SET processes=500 SCOPE=SPFILE;

4. SELinux / AppArmor / 防火墙干扰

Ubuntu 默认用 AppArmor,可能影响 Oracle。

检查

systemctl status apparmor

建议

  • 对 Oracle 目录加白名单
  • 或临时关闭测试:
systemctl stop apparmor

5. 文件系统选择不当

  • ext4 ✅(推荐)
  • btrfs ❌(Oracle 不友好)
  • NFS ❌(极慢)

二、Ubuntu 特有原因

1. 内核参数未调优

Oracle 官方要求修改:

/etc/sysctl.conf

示例:

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmax = 4294967295
kernel.shmall = 1048576
sysctl -p

2. 用户资源限制未设置

/etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

三、网络和客户端原因

  • 使用 localhost 而不是 127.0.0.1
  • 监听器解析慢
  • JDBC / 客户端连接慢

建议

  • 使用 SID 而非 SERVICE_NAME 测试
  • listener 使用 IP 而非 hostname

四、快速自检清单 ✅

free -h
df -h
iostat -x 1
top
sqlplus / as sysdba
SHOW PARAMETER memory

五、总结一句话

Ubuntu 上 Oracle 慢,90% 是 内存 + 磁盘 I/O + 参数未优化 导致的,不是 Ubuntu 不行。

如果你愿意,可以告诉我:

  • Oracle 版本(11g / 12c / 19c)
  • 物理机 / 虚拟机 / 云
  • 内存大小
  • 主要慢在「启动 / 查询 / 连接」

我可以给你一套针对性优化方案。

0 踩