“Debian + Oracle”通常指 在 Debian 系统上运行 Oracle Database(如 Oracle 19c / 21c)。下面从 系统层、内核参数、文件系统、Oracle 参数、运维建议 几个方面给你一套比较实用的优化方案(以 Oracle 19c 为例,其他版本思路类似)。
systemctl disable bluetooth
systemctl disable cups
编辑 /etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft memlock unlimited
oracle hard memlock unlimited
/etc/pam.d/common-session 确保:
session required pam_limits.so
编辑 /etc/sysctl.conf(示例,按内存调整):
# 共享内存
kernel.shmmax = 17179869184 # 16G
kernel.shmall = 4194304
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
# 交换 & 大页
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
应用:
sysctl -p
grep Hugepagesize /proc/meminfo
例如:
HugePages = 20*1024 / 2 = 10240
vm.nr_hugepages = 10240
并禁用自动 NUMA:
echo 0 > /proc/sys/kernel/numa_balancing
挂载示例:
/dev/sdb1 /u01 xfs defaults,noatime,nodiratime 0 0
echo none > /sys/block/sdb/queue/scheduler
multipath + ASMALTER SYSTEM SET sga_target=20G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=4G SCOPE=SPFILE;
ALTER SYSTEM SET memory_target=0 SCOPE=SPFILE;
ALTER SYSTEM SET processes=2000 SCOPE=SPFILE;
ALTER SYSTEM SET sessions=2200 SCOPE=SPFILE;
ALTER SYSTEM SET log_buffer=16M SCOPE=SPFILE;
ALTER SYSTEM SET db_writer_processes=4 SCOPE=SPFILE;
EXEC DBMS_STATS.GATHER_DATABASE_STATS;
/etc/os-release
示例:
ID="ol"
常见缺失包:
apt install gcc make binutils libaio1 unixodbc
sar -u -r -d 1DBMS_STATS你可以告诉我:
我可以直接给你 一份可执行的优化清单或脚本。