温馨提示×

Linux Oracle怎么优化

小樊
33
2026-07-01 04:15:52
栏目: 云计算

Linux + Oracle 数据库 环境里,“优化”通常分为 系统层、存储层、Oracle 参数层、SQL 层 四个层面。下面给你一套 实战型优化清单,按优先级和常见场景来整理。


一、Linux 系统层优化(重点)

1. 内核参数优化(必须)

编辑:

vi /etc/sysctl.conf

常用参数(示例):

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
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5

生效:

sysctl -p

✅ 目的:减少 swap、提升共享内存、优化网络 IO


2. 文件句柄 & 用户限制

vi /etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 65536
oracle hard nproc 65536

3. 关闭无关服务

systemctl disable firewalld
systemctl disable bluetooth
systemctl disable postfix

✅ 减少系统干扰


4. CPU & NUMA(大系统才需要)

numactl --hardware

如果是多 CPU:

numactl --interleave=all

二、存储 & 文件系统优化(非常关键)

1. 文件系统选择

推荐

  • xfs(生产环境最常用)
  • ext4(也可)
mkfs.xfs /dev/sdb

2. 挂载参数优化

vi /etc/fstab

示例:

/dev/sdb /oracle xfs defaults,noatime,nodiratime,nobarrier 0 0

✅ 避免 atime 更新,提高 IO


3. ASM vs 文件系统(强烈建议)

场景 建议
生产库 ✅ ASM
小测试 文件系统

ASM优势:

  • 自动条带化
  • 减少 OS IO 干扰
  • Oracle 官方推荐

4. IO 调度器

查看:

cat /sys/block/sda/queue/scheduler

建议:

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

SSD 可用:

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

三、Oracle 参数优化(核心)

1. 内存参数(以 16G 内存为例)

show parameter memory

推荐:

ALTER SYSTEM SET memory_max_target=12G SCOPE=SPFILE;
ALTER SYSTEM SET memory_target=12G SCOPE=SPFILE;

或使用传统方式(更稳定):

sga_max_size=8G
sga_target=8G
pga_aggregate_target=4G

2. 进程 & session

show parameter processes
show parameter sessions

示例:

processes=2000
sessions=3000

3. Redo & Undo

undo_retention=10800

Redo log:

SELECT group#, bytes FROM v$log;

✅ 建议单个 redo ≥ 512MB


4. 关闭不必要的特性

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

四、SQL 与对象优化(见效最快)

1. 执行计划

EXPLAIN PLAN FOR SELECT ...

关注:

  • FULL TABLE SCAN
  • 高 COST
  • 无索引

2. 索引优化

CREATE INDEX idx_xxx ON table(col);

避免:

  • 重复索引
  • 索引列使用函数

3. 统计信息

EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','EMP');

定期收集统计信息 ✅


五、高并发 & 性能瓶颈排查

1. TOP 事件

SELECT * FROM v$system_event ORDER BY time_waited DESC;

常见:

  • db file sequential read → 索引问题
  • log file sync → commit 频繁
  • enq: TX → 锁

2. AWR 报告(最重要)

@?/rdbms/admin/awrrpt.sql

重点看:

  • DB Time
  • Top SQL
  • Wait Events

六、经验总结(老 DBA 必看)

优先顺序

  1. SQL 优化
  2. 内存配置
  3. IO / 存储
  4. Linux 参数

不要盲目做

  • 改隐藏参数
  • 随便加大 SGA
  • 开启大页却没配置对

七、如果你愿意,我可以:

  • ✅ 按 你当前服务器配置(内存 / CPU / 磁盘)给出定制参数
  • ✅ 帮你 分析 AWR
  • ✅ 给 Oracle 11g / 12c / 19c 专用优化方案
  • ✅ 判断是该升级还是调优

你可以直接告诉我:

Oracle 版本 + 内存 + CPU + 当前主要问题

0