温馨提示×

linux oracle配置怎样调优

小樊
39
2026-10-28 06:01:50
栏目: 云计算

下面从 Linux 操作系统层 + Oracle 数据库层 两个维度,系统性地讲一下 Oracle 在 Linux 上的常见调优点,适合生产环境参考。


一、Linux 系统层调优

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

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

# 共享内存(Oracle SGA 需要)
kernel.shmmax = 物理内存的 80%(字节)
kernel.shmall = shmmax / PAGE_SIZE
kernel.shmmni = 4096

# 信号量
kernel.sem = 250 32000 100 128

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

# 网络
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_max = 4194304
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304

生效:

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 memlock unlimited
oracle hard memlock unlimited

3. 关闭或优化透明大页(THP)

Oracle 强烈建议关闭 THP

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

永久生效(grub 或 rc.local)。


4. 使用 HugePages(重要)

减少 SGA 分页,提升性能。

步骤简述:

  1. 计算 SGA 大小
  2. 设置 vm.nr_hugepages
  3. 确保 memlock 足够
  4. Oracle 使用 USE_LARGE_PAGES=TRUE

5. 磁盘 I/O 调优

  • 使用 deadline / none 调度器(SSD/NVMe)
echo deadline > /sys/block/sda/queue/scheduler
  • 数据文件、redo、归档分盘
  • 使用 ASM 更佳

6. 文件系统

  • EXT4 / XFS
  • 挂载选项:
noatime,nodiratime

二、Oracle 数据库层调优

1. SGA / PGA 配置

-- 示例(总内存 64G)
SGA_TARGET = 40G
SGA_MAX_SIZE = 40G
PGA_AGGREGATE_TARGET = 12G

原则:

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

2. redo log 优化

  • 每组至少 2 个成员
  • 大小 512MB–2GB
  • 放在最快磁盘
SELECT * FROM v$log;

3. 统计信息

定期收集:

EXEC DBMS_STATS.GATHER_DATABASE_STATS;

4. SQL 调优

  • 使用 AWR / ADDM
@?/rdbms/admin/awrrpt.sql
  • 避免全表扫描
  • 合理建索引
  • 绑定变量

5. 参数建议

DB_CACHE_SIZE
SHARED_POOL_SIZE
LOG_BUFFER
OPEN_CURSORS
SESSION_CACHED_CURSORS

三、监控与验证

  • top, vmstat, iostat
  • v$sysstat, v$session
  • AWR / ASH

四、典型问题快速对照

现象 可能原因
CPU 高 SQL 差 / 缺索引
IO 高 redo / 全表扫描
内存 Swap SGA 过大 / 无 HugePages
连接慢 监听 / 网络

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

  • Oracle 版本(11g / 12c / 19c)
  • Linux 发行版
  • 内存 / CPU / 磁盘类型
  • 主要业务类型(OLTP / OLAP)

我可以给你一套针对性配置模板。

0 踩