Oracle Linux 调优详解
Oracle Linux 调优详解
适用版本:Oracle Linux 7 / 8 / 9 文档版本:v1.0 / 2026-07
1. 概述
Oracle Linux 调优提升数据库性能[1]:
详细见:Oracle-Linux8 配置详解。
2. CPU
2.1 CPU 亲和
# 绑定 CPU
taskset -p ****** <pid>
# NUMA
numactl --cpunodebind=0 --membind=0 oracle
2.2 调度
# nice
nice -n -10 oracle
# chrt
chrt -f -p ****** <pid>
2.3 CFS
# /etc/sysctl.conf
kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000
3. 内存
3.1 HugePages
# 计算
SGA 字节 / 2MB = HugePages 数量
# 配置
echo "vm.nr_hugepages = 8192" >> /etc/sysctl.conf
sysctl -p
****** 验证
grep Huge /proc/meminfo
3.2 透明大页
# 禁用
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 持久
# /etc/default/grub
GRUB_CMDLINE_LINUX="... transparent_hugepage=never"
grub2-mkconfig -o /boot/grub2/grub.cfg
3.3 Swap
# swappiness
sysctl -w vm.swappiness=1
# /etc/sysctl.conf
vm.swappiness = 1
3.4 Dirty
vm.dirty_background_ratio = 3
vm.dirty_ratio = 15
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
详细见:Oracle 内存管理 SGA/PGA。
4. I/O
4.1 调度器
# 查看
cat /sys/block/sda/queue/scheduler
# 设置(SSD)
echo "none" > /sys/block/sda/queue/scheduler
# 设置(HDD)
echo "deadline" > /sys/block/sda/queue/scheduler
4.2 IO 队列
# 队列深度
echo 256 > /sys/block/sda/queue/nr_requests
4.3 readahead
blockdev --setra 16384 /dev/sda
4.4 文件系统
# mount
mount -o noatime,nodiratime,data=writeback /dev/sda1 /u01
# /etc/fstab
/dev/sda1 /u01 ext4 noatime,nodiratime,data=writeback 0 0
5. 网络
5.1 TCP
# /etc/sysctl.d/99-tcp.conf
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_low_latency = 1
5.2 ring buffer
ethtool -G ens33 rx 4096 tx 4096
5.3 中断
# 绑定
cat /proc/interrupts
echo <cpu_mask> > /proc/irq/<irq>/smp_affinity
5.4 RPS/RFS
echo ffff > /sys/class/net/ens33/queues/rx-0/rps_cpus
echo 32768 > /proc/sys/net/core/rps_sock_flow_entries
6. UEK 内核
6.1 UEK 优势
- Oracle 优化
- UEK 6/7
- 默认 OL 7/8/9
6.2 安装
dnf install -y kernel-uek
6.3 启动
# /etc/default/grub
GRUB_DEFAULT=0
grub2-mkconfig -o /boot/grub2/grub.cfg
7. NUMA
7.1 查看
numactl --hardware
numastat
7.2 Oracle NUMA
ALTER SYSTEM SET "_enable_NUMA_support" = TRUE SCOPE=SPFILE;
7.3 绑定
numactl --interleave=all oracle
8. 进程限制
8.1 /etc/security/limits.d
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock unlimited
oracle hard memlock unlimited
8.2 cgroup
# /etc/cgconfig.conf
group oracle {
cpu {
cpu.cfs_quota_us = 200000;
cpu.cfs_period_us = 100000;
}
memory {
memory.limit_in_bytes = 8G;
}
}
9. 文件系统
9.1 XFS
# 推荐 OL 8+
mkfs.xfs /dev/sda1
mount -o noatime /dev/sda1 /u01
9.2 ext4
mkfs.ext4 /dev/sda1
mount -o noatime,data=writeback /dev/sda1 /u01
9.3 Block Size
- 8K(数据)
- 4K(其他)
10. 磁盘
10.1 I/O Scheduler
| 类型 | 推荐 |
|---|---|
| SSD | none |
| NVMe | none |
| HDD | deadline / mq-deadline |
| 虚拟 | none |
10.2 多路径
# /etc/multipath.conf
defaults {
user_friendly_names yes
find_multipaths yes
polling_interval 10
path_checker tur
path_grouping_policy group_by_prio
path_selector "round-robin 0"
failback immediate
no_path_retry 18
}
11. 守护进程
11.1 关闭不必要服务
systemctl stop cups
systemctl stop avahi-daemon
systemctl stop bluetooth
systemctl stop postfix
systemctl disable cups
systemctl disable avahi-daemon
11.2 tuned
dnf install -y tuned
tuned-adc profile oracle
12. 验证
12.1 内核
uname -a
sysctl -a | grep -E 'shmall|shmmax|sem|swappiness'
12.2 I/O
iostat -x 1 5
fio --name=test --filename=/tmp/test --size=1G --rw=randread --bs=4k --time_based --runtime=60
12.3 网络
iperf3 -c target
netstat -s
13. Oracle 参数
13.1 内存
ALTER SYSTEM SET sga_target = 16G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 4G SCOPE=SPFILE;
ALTER SYSTEM SET memory_target = 0 SCOPE=SPFILE;
ALTER SYSTEM SET use_large_pages = ONLY SCOPE=SPFILE;
详细见:Oracle 数据库参数调优。
13.2 I/O
ALTER SYSTEM SET filesystemio_options = setall SCOPE=SPFILE;
ALTER SYSTEM SET disk_asynch_io = TRUE SCOPE=SPFILE;
13.3 CPU
ALTER SYSTEM SET cpu_count = 8 SCOPE=SPFILE;
ALTER SYSTEM SET parallel_threads_per_cpu = 1 SCOPE=SPFILE;
14. 常见坑与排错
14.1 HugePages 不足
- 内存浪费
- 调整
14.2 Swap 频繁
- swappiness
- 内存增加
14.3 I/O 慢
- 调度器
- readahead
- 文件系统
15. 最佳实践
- UEK 内核:Oracle 优化
- HugePages:大内存
- 禁用透明大页:稳定
- swappiness=1:内存
- SSD none 调度:性能
- noatime:文件系统
- 网络调优:吞吐
- NUMA:多 CPU
- 关闭不必要服务:资源
- 验证:测试
16. 参考资料
[1] Oracle Linux Administration Guide https://docs.oracle.com/en/operating-systems/oracle-linux/