在 Debian 上“优化 Oracle”通常包含几个层面:系统层(OS)优化、Oracle 数据库参数优化、存储与文件系统优化、内存与内核参数优化。下面按实战角度给你一个较完整的优化指南(以 Oracle 19c / 21c 在 Debian 10/11/12 为例,思路同样适用于其他版本)。
编辑 /etc/sysctl.conf 或 /etc/sysctl.d/99-oracle.conf:
# 共享内存
kernel.shmmax = 68719476736
kernel.shmall = 16777216
kernel.shmmni = 4096
# 信号量
kernel.sem = 250 32000 100 128
# 文件句柄
fs.file-max = 6815744
# 网络
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# Swap 行为(减少 swap)
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
执行:
sysctl --system
编辑 /etc/security/limits.conf:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 32768
oracle hard stack 32768
确保 PAM 加载:
grep pam_limits /etc/pam.d/common-session
systemctl disable --now bluetooth
systemctl disable --now avahi-daemon
xfs(优于 ext4)none 或 mq-deadlinemkfs.xfs /dev/sdb
mount -o noatime,nodiratime /dev/sdb /u01
永久挂载 /etc/fstab:
/dev/sdb /u01 xfs noatime,nodiratime 0 0
echo none > /sys/block/sdb/queue/scheduler
计算 HugePages:
grep Hugepagesize /proc/meminfo
示例(64G 内存):
vm.nr_hugepages = 30000
sysctl -w vm.nr_hugepages=30000
Oracle 参数:
ALTER SYSTEM SET use_large_pages=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET sga_target=40G SCOPE=SPFILE;
ALTER SYSTEM SET sga_max_size=40G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=8G SCOPE=SPFILE;
原则:
ALTER SYSTEM SET processes=2000 SCOPE=SPFILE;
ALTER SYSTEM SET sessions=3000 SCOPE=SPFILE;
ALTER SYSTEM SET open_cursors=1000 SCOPE=BOTH;
ALTER SYSTEM SET undo_retention=1800 SCOPE=BOTH;
ALTER SYSTEM SET cursor_sharing=FORCE SCOPE=BOTH;
ALTER DATABASE ADD LOGFILE GROUP 4 SIZE 512M;
EXEC DBMS_STATS.GATHER_DATABASE_STATS;
✅ Debian 不是 Oracle 官方支持系统
✅ 需手动安装依赖:
apt install gcc make binutils libmotif4 libaio1
✅ 建议使用 Oracle Linux 兼容层 或容器方案(Docker / Podman)
如果你能告诉我:
我可以给你更精确的参数模板。