温馨提示×

ubuntu oracle怎么优化

小樊
62
2026-07-30 08:31:25
栏目: 云计算

你问的“Ubuntu Oracle 怎么优化”,一般指的是 在 Ubuntu 上运行 Oracle 数据库(通常是 Oracle 19c / 21c / 11g)时的性能优化。下面我从 系统层、Oracle 参数层、存储层、常见坑 四个方面给你一个实用优化清单,偏生产环境。


一、Ubuntu 系统层优化(非常重要)

1️⃣ 内核参数(/etc/sysctl.conf

Oracle 对共享内存、信号量要求很高:

fs.file-max = 6815744
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
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 = 1

生效:

sysctl -p

2️⃣ 用户限制(/etc/security/limits.conf

Oracle 用户必须改:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768

3️⃣ 关闭 NUMA(强烈建议)

numactl --hardware

如果是多 CPU 服务器:

echo 0 > /proc/sys/vm/zone_reclaim_mode

或 GRUB 加:

numa=off

4️⃣ 关闭透明大页(Transparent HugePages)

Oracle 不支持透明大页

cat /sys/kernel/mm/transparent_hugepage/enabled

关闭:

echo never > /sys/kernel/mm/transparent_hugepage/enabled

二、Oracle 数据库参数优化(核心)

1️⃣ 内存参数(SGA / PGA)

ALTER SYSTEM SET sga_target=8G SCOPE=SPFILE;
ALTER SYSTEM SET sga_max_size=8G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=2G SCOPE=SPFILE;

经验值:

  • SGA ≈ 60–70% 物理内存
  • PGA ≈ 20–30%

2️⃣ 进程 & 会话数

ALTER SYSTEM SET processes=1000 SCOPE=SPFILE;
ALTER SYSTEM SET sessions=1500 SCOPE=SPFILE;

3️⃣ 日志 & 检查点优化

ALTER SYSTEM SET log_buffer=16M SCOPE=SPFILE;
ALTER SYSTEM SET fast_start_mttr_target=300 SCOPE=SPFILE;

4️⃣ 关闭不必要的特性(省资源)

ALTER SYSTEM SET deferred_segment_creation=FALSE;
ALTER SYSTEM SET audit_trail=NONE SCOPE=SPFILE;

三、存储 & IO 优化(最容易忽略)

1️⃣ 数据文件放独立磁盘

避免:

  • / 根目录
  • 和 OS 混用

推荐:

/oradata
/fast_recovery_area

2️⃣ 文件系统选择

推荐顺序

  1. XFS(首选)
  2. ext4(次选)
mkfs.xfs /dev/sdb

❌ 不建议:btrfs、zfs(Oracle 官方不支持)


3️⃣ redo log 优化

  • redo log 放 最快磁盘
  • 每组至少 2 个成员
  • 大小 ≥ 512MB
SELECT group#, bytes, members FROM v$log;

四、Ubuntu + Oracle 常见坑

❌ 1. Ubuntu 不是 Oracle 官方支持系统

Oracle 官方只支持 RHEL / OEL / SLES

✅ 解决:

  • Oracle Linux
  • 或 Ubuntu + 手动补依赖(生产不推荐)

❌ 2. 时间同步问题

必须:

timedatectl set-ntp true

或:

apt install chrony

❌ 3. 防火墙 & SELinux

Ubuntu 用 ufw

ufw allow 1521/tcp

五、快速检查清单(排错用)

SELECT * FROM v$sgainfo;
SELECT * FROM v$pgastat;
SELECT event, total_waits FROM v$system_event ORDER BY total_waits DESC;

六、如果你愿意,我可以继续帮你

你可以直接告诉我:

  1. ✅ Oracle 版本(11g / 19c / 21c)
  2. ✅ Ubuntu 版本(20.04 / 22.04)
  3. ✅ 物理机 / 虚拟机 / 云服务器
  4. ✅ 主要用途(OLTP / 报表 / 测试)

我可以给你 一份针对你环境的精确优化参数模板

0