在 Ubuntu 上运行 Oracle 数据库感觉“慢”,通常不是 Ubuntu 本身的问题,而是配置、资源、I/O、参数等多方面因素导致的。下面按常见原因分类说明,并给出排查和优化建议。
Oracle 非常吃内存,尤其是 SGA、PGA。
表现
top 中 si/wa 高检查
free -h
swapon --show
top
建议
sysctl vm.swappiness=10
Ubuntu 常在 虚拟机 / 云盘 / 机械盘 上跑 Oracle。
表现
iostat 中 %util 接近 100%检查
iostat -x 1
建议
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;
Ubuntu 默认用 AppArmor,可能影响 Oracle。
检查
systemctl status apparmor
建议
systemctl stop apparmor
ext4 ✅(推荐)btrfs ❌(Oracle 不友好)Oracle 官方要求修改:
/etc/sysctl.conf
示例:
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmax = 4294967295
kernel.shmall = 1048576
sysctl -p
/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建议
SID 而非 SERVICE_NAME 测试free -h
df -h
iostat -x 1
top
sqlplus / as sysdba
SHOW PARAMETER memory
Ubuntu 上 Oracle 慢,90% 是 内存 + 磁盘 I/O + 参数未优化 导致的,不是 Ubuntu 不行。
如果你愿意,可以告诉我:
我可以给你一套针对性优化方案。