温馨提示×

linux oracle怎么调优

小樊
45
2026-07-28 11:35:53
栏目: 云计算

Linux 上运行 Oracle 数据库 的调优是一个系统工程,通常分为 操作系统层、存储层、Oracle 实例层、SQL 层。下面给你一个实用、可落地的调优思路,适合生产环境。


一、Linux 系统层调优(基础)

1️⃣ 内核参数(sysctl)

编辑 /etc/sysctl.conf

# 共享内存(Oracle SGA 依赖)
kernel.shmmax = 68719476736        # 64GB,建议 ≥ SGA
kernel.shmall = 16777216           # shmmax/PAGE_SIZE

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

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

# 网络
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
sysctl -p

2️⃣ 用户限制(ulimit)

编辑 /etc/security/limits.conf

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

3️⃣ 关闭无关服务

systemctl disable firewalld
systemctl disable selinux

(生产环境视安全策略而定)


4️⃣ 大页(HugePages)✅强烈推荐

避免 SGA 被 swap:

grep Huge /proc/meminfo

计算大页数量:

Hugepagesize = 2048 kB
SGA = 32G → 32*1024*1024/2048 = 16384

/etc/sysctl.conf

vm.nr_hugepages = 16384

二、存储与文件系统调优

1️⃣ 文件系统选择

场景 推荐
生产 xfs / ext4
高性能 ASM(首选)

2️⃣ 磁盘调度算法

cat /sys/block/sda/queue/scheduler

推荐:

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

或(新内核):

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

3️⃣ ASM 建议

  • 使用 ASM 而非文件系统
  • 磁盘组使用:
    • NORMAL / HIGH 冗余
    • AU size ≥ 4MB(大库)

三、Oracle 实例参数调优(重点)

1️⃣ SGA & PGA(最常见瓶颈)

show parameter sga
show parameter pga

推荐设置:

alter system set sga_target=24G scope=spfile;
alter system set sga_max_size=24G scope=spfile;
alter system set pga_aggregate_target=8G scope=spfile;

经验值:

内存 SGA PGA
64G 40G 12G
128G 80G 20G

2️⃣ 关闭自动内存管理(AMM)

⚠️ 生产不建议 AMM

alter system set memory_target=0 scope=spfile;

3️⃣ 重要参数

alter system set processes=2000 scope=spfile;
alter system set sessions=3000 scope=spfile;
alter system set open_cursors=1000;
alter system set undo_retention=3600;

四、SQL 与对象层调优

1️⃣ 索引优化

  • 避免全表扫描
  • 联合索引顺序合理
  • 定期重建碎片索引
alter index idx_name rebuild;

2️⃣ SQL 调优

set autotrace on

关注:

  • Cost
  • Consistent Gets
  • Physical Reads

使用:

  • /*+ INDEX */
  • /*+ USE_HASH */
  • /*+ LEADING */

3️⃣ 统计信息

exec dbms_stats.gather_table_stats('SCOTT','EMP');

五、AWR / ADDM 分析(必做)

1️⃣ 生成 AWR

@?/rdbms/admin/awrrpt.sql

重点看:

  • Top 5 Timed Events
  • SQL ordered by Elapsed Time
  • Buffer Hit %
  • PGA Hit %

2️⃣ ADDM 建议

@?/rdbms/admin/addmrpt.sql

六、常见性能瓶颈速查表

现象 原因 解决
CPU 高 SQL 全表扫描 加索引
IO 高 热块 / 索引失效 分区 / 索引
Swap 高 SGA 过大 开 HugePages
锁等待 事务长 提交频率
连接慢 processes 不够 调大参数

七、推荐生产调优顺序 ✅

  1. Linux 内核 & HugePages
  2. 存储(ASM + deadline)
  3. SGA / PGA
  4. AWR / ADDM
  5. SQL & 索引
  6. 业务优化

如果你愿意,我可以帮你:

  • 分析 AWR 报告
  • 给出具体参数建议(按你服务器内存)
  • 针对 OLTP / OLAP 专项调优
  • Oracle 19c / 11g 区别方案

你可以直接贴:

服务器内存、CPU、Oracle 版本、主要业务类型

0