在 Ubuntu 上优化 Oracle 数据库(通常指 Oracle Database,多为 19c / 21c / 23c 等 Linux 版本),可以从操作系统层、内核参数、文件系统、Oracle 参数、资源限制、监控几个方面入手。下面给你一套比较实用、可落地的优化清单。
uname -a
systemctl disable bluetooth
systemctl disable cups
systemctl disable snapd
apt install linux-tools-common
cpupower frequency-set -g performance
开机自动:
systemctl enable cpupower
编辑 /etc/sysctl.conf:
# 内存与共享内存
kernel.shmmax = 68719476736
kernel.shmall = 16777216
kernel.shmmni = 4096
# 信号量
kernel.sem = 250 32000 100 128
# 文件句柄
fs.file-max = 6815744
# 网络
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# Swap 使用策略
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
应用:
sysctl -p
编辑 /etc/security/limits.conf:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
确保 PAM 加载:
/etc/pam.d/common-session
session required pam_limits.so
mkfs.xfs /dev/sdb
挂载参数示例:
/dev/sdb /u01 xfs defaults,noatime,nodiratime 0 0
建议:
/u01:Oracle 软件/u02:数据文件/u03:redo / archiveALTER SYSTEM SET sga_target=40G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=12G SCOPE=SPFILE;
ALTER SYSTEM SET memory_target=0 SCOPE=SPFILE;
ALTER SYSTEM SET processes=2000 SCOPE=SPFILE;
ALTER SYSTEM SET sessions=3000 SCOPE=SPFILE;
ALTER DATABASE ADD LOGFILE GROUP 4 SIZE 2G;
ALTER SYSTEM SET undo_retention=1800;
ALTER SYSTEM SET db_writer_processes=4;
ALTER SYSTEM SET disk_asynch_io=TRUE;
示例 /etc/systemd/system/oracle.service:
[Unit]
Description=Oracle Database
After=network.target
[Service]
User=oracle
Type=forking
Environment=ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
ExecStart=/u01/app/oracle/product/19c/dbhome_1/bin/dbstart
ExecStop=/u01/app/oracle/product/19c/dbhome_1/bin/dbshut
[Install]
WantedBy=multi-user.target
# OS
top, htop, iostat -x 1, vmstat 1
# Oracle
sqlplus / as sysdba
SELECT * FROM v$sysstat;
SELECT * FROM v$session_wait;
| 问题 | 可能原因 |
|---|---|
| CPU 高 | 缺少索引 / 硬解析 |
| IO 高 | redo 小 / 随机写 |
| 内存换页 | swappiness 高 |
| 连接慢 | processes 不足 |
如果你愿意,可以告诉我:
我可以给你更精确的参数模板。