温馨提示×

oracle在linux如何调优

小樊
37
2026-09-28 14:48:08
栏目: 云计算

下面从 操作系统层、Oracle 实例层、存储层、监控与常见问题 几个维度,系统性地说明 Oracle 在 Linux 下的调优思路和方法。内容偏实战,适合 DBA 和运维。


一、Linux 操作系统层调优

1. 内核参数(/etc/sysctl.conf)

重点关注内存、网络、文件句柄。

# 内存相关
vm.swappiness = 10
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.overcommit_memory = 2

# 文件句柄
fs.file-max = 6815744

# 网络
net.core.rmem_max = 4194304
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv4.tcp_tw_reuse = 1

执行:

sysctl -p

2. 用户资源限制(/etc/security/limits.conf)

Oracle 用户必须配置:

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

3. 关闭无关服务

  • 关闭 NUMA( BIOS 或 grub )
  • 禁用透明大页(THP)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

Oracle 官方强烈建议关闭 THP


4. 使用 HugePages(非常重要)

减少 TLB miss,提高 SGA 访问效率。

grep Huge /proc/meminfo

计算 HugePages 数量:

echo $(( SGA_MB / 2 ))  # 2MB per page

配置:

vm.nr_hugepages = 4096

二、Oracle 实例参数调优

1. 内存参数

SGA_TARGET
SGA_MAX_SIZE
PGA_AGGREGATE_TARGET

建议:

  • SGA ≈ 60–70% 物理内存
  • PGA ≈ 20–30%
  • 开启 AMM / ASMM(11g/12c+)
ALTER SYSTEM SET MEMORY_TARGET=16G SCOPE=SPFILE;

2. 进程与连接

PROCESSES
SESSIONS
OPEN_CURSORS

经验值:

PROCESSES = 并发用户数 * 1.5
OPEN_CURSORS = 300~1000

3. 重要性能参数

DB_CACHE_SIZE
SHARED_POOL_SIZE
LOG_BUFFER
UNDO_RETENTION

三、存储与 I/O 调优

1. 文件系统选择

  • ✅ XFS(推荐)
  • ✅ ASM(生产最佳)
  • ❌ ext3(不推荐)

2. 磁盘调度算法

cat /sys/block/sda/queue/scheduler

推荐:

echo deadline > /sys/block/sda/queue/scheduler

3. 分离存储

  • 数据文件
  • redo log
  • undo
  • archivelog

避免争用


四、SQL 与对象层调优

1. 常见手段

  • 索引优化
  • 统计信息更新
EXEC DBMS_STATS.GATHER_TABLE_STATS('USER','TABLE');
  • SQL 绑定变量
  • 避免全表扫描

2. AWR / ASH 分析

@?/rdbms/admin/awrrpt.sql
@?/rdbms/admin/ashrpt.sql

重点看:

  • Top SQL
  • Wait Events
  • Buffer Busy Waits

五、监控与诊断工具

Linux

top
vmstat 1
iostat -x 1
sar -u 1

Oracle

V$SESSION
V$SQL
V$SYSSTAT
V$WAITSTAT

六、典型调优场景

问题 原因 解决
CPU 高 硬解析 绑定变量
IO 高 索引缺失 建索引
内存 swap swappiness 高 调低
连接慢 网络参数 调整 tcp
ORA-4031 shared pool 小 增大

七、总结优先级

  1. ✅ OS 基础调优(THP、limits、HugePages)
  2. ✅ 存储与 I/O
  3. ✅ 内存参数
  4. ✅ SQL 优化
  5. ✅ 持续监控

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

  • Oracle 版本(11g / 12c / 19c)
  • Linux 发行版
  • 物理内存 & CPU
  • 主要问题(慢 / 高 CPU / OOM)

我可以给你 具体参数配置方案。

0 踩