“Ubuntu + Oracle 慢”通常不是 Ubuntu 本身慢,而是 Oracle 在 Linux 上的一些默认行为和资源配置没调好。下面按最常见原因 → 对应解决办法给你一套“实战清单”,你可以逐条对照。
Oracle 严重依赖 SHM / HugePages,Ubuntu 默认偏小。
df -h /dev/shm
如果只有几百 MB,Oracle 会非常卡。
解决:
sudo vim /etc/fstab
修改或添加:
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
然后:
sudo mount -o remount /dev/shm
编辑:
sudo vim /etc/sysctl.conf
加入(示例,内存 8G):
kernel.shmmax = 4294967296
kernel.shmall = 1048576
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.core.rmem_max = 4194304
net.core.wmem_max = 4194304
生效:
sudo sysctl -p
Oracle 官方强烈推荐。
grep Huge /proc/meminfo
sudo sysctl -w vm.nr_hugepages=2048
(2048 × 2MB = 4GB,按内存调整)
并在 /etc/security/limits.conf 加:
oracle soft memlock unlimited
oracle hard memlock unlimited
重启 Oracle 后效果明显。
Oracle 对 I/O 极敏感。
sudo vim /etc/fstab
例如:
/dev/sdb1 /u01 ext4 defaults,noatime,nodiratime 0 0
SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;
一般建议:
ALTER SYSTEM SET MEMORY_TARGET=4G SCOPE=SPFILE;
sudo ufw disable
(测试用,生产要开端口)
Oracle 不喜欢无 swap:
free -h
建议 swap ≥ 2G
sudo vim /etc/hosts
加上:
127.0.0.1 localhost yourhostname
lsnrctl status
检查是否有超时。
df -h /dev/shm
free -h
grep Huge /proc/meminfo
top
iostat -x 1
你可以告诉我:
我可以直接给你一套可复制的配置。