温馨提示×

ubuntu oracle如何优化

小樊
44
2026-10-07 17:12:17
栏目: 云计算

你提到的 “Ubuntu + Oracle 如何优化”,通常指 在 Ubuntu 系统上运行 Oracle 数据库(如 Oracle 19c / 21c / 23c)时的性能与系统优化。下面从 系统层、Oracle 参数层、存储与内核、运维建议 四个方面系统说明。


一、系统层优化(Ubuntu)

1. 内核参数优化(非常重要)

Oracle 对共享内存、信号量、文件句柄要求很高。

编辑 /etc/sysctl.conf:

# 共享内存
kernel.shmmax = 17179869184
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

执行:

sysctl -p

2. 用户资源限制

编辑 /etc/security/limits.conf:

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

确保 PAM 加载:

/etc/pam.d/common-session
session required pam_limits.so

3. 关闭不必要的服务

systemctl disable snapd
systemctl disable ufw
systemctl stop ufw

(生产环境不建议完全关防火墙,应做白名单)


4. 使用合适的文件系统

  • ✅ XFS(推荐)
  • ❌ EXT4(IO 高时不如 XFS)
mkfs.xfs /dev/sdb

挂载参数(示例):

/dev/sdb /u01 xfs defaults,noatime,nodiratime 0 0

二、Oracle 数据库参数优化

1. 内存参数(SGA / PGA)

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

⚠ 建议:

  • 物理内存 ≤ 16G:SGA ≈ 60–70%
  • 物理内存 ≥ 32G:SGA ≈ 70–80%

2. 进程与连接

ALTER SYSTEM SET processes=500 SCOPE=SPFILE;
ALTER SYSTEM SET sessions=600 SCOPE=SPFILE;

3. 日志与写入优化

ALTER SYSTEM SET log_buffer=16M SCOPE=SPFILE;
ALTER SYSTEM SET db_writer_processes=4 SCOPE=SPFILE;

4. 自动维护

ALTER SYSTEM SET undo_retention=1800;

三、存储与 IO 优化

1. 数据文件分离

典型结构:

/u01 → Oracle 软件
/u02 → 数据文件
/u03 → redo / undo
/u04 → 备份

避免所有文件在同一磁盘。


2. REDO 日志

  • 每组 ≥ 200MB
  • 至少 3 组
  • 放在最快磁盘(NVMe / SSD)
ALTER DATABASE ADD LOGFILE GROUP 4 ('/u03/redo04.log') SIZE 300M;

3. ASM(生产推荐)

如果条件允许:

  • 使用 Oracle ASM
  • 避免文件系统层开销

四、Ubuntu 特有注意事项

1. Oracle 官方支持情况

  • ✅ Oracle 19c + Ubuntu 20.04/22.04(部分需手动补依赖)
  • ❌ Oracle 不建议 Ubuntu 作为官方生产首选(RHEL / OL 更稳)

常见依赖:

apt install -y binutils compat-libcap1 gcc libaio1

2. 使用 HugePages(重要)

sysctl -w vm.nr_hugepages=4096

Oracle 中:

USE_LARGE_PAGES=TRUE

3. 时间同步

timedatectl set-ntp true

五、常见性能问题定位

-- 看等待事件
SELECT event, count(*) FROM v$session_wait GROUP BY event;

-- 看慢 SQL
SELECT * FROM v$sql ORDER BY elapsed_time DESC;

六、总结(生产建议)

✅ Ubuntu + Oracle 可用,但需“手动调” ✅ 内核参数必须改 ✅ 存储分离 + XFS + HugePages ✅ 生产环境优先 Oracle Linux


如果你愿意,可以告诉我:

  • Oracle 版本(19c / 21c?)
  • Ubuntu 版本
  • 物理机 / 云服务器
  • 主要用途(OLTP / 报表 / 测试)

我可以给你一份 针对性的优化清单或参数模板。

0 踩