在 Linux 上 Oracle 数据库配置或运行变慢,通常不是单一原因,而是多个层面叠加。下面按常见原因 → 排查思路 → 优化建议来说明,便于你对照定位。
表现
原因
排查
top
mpstat 1
优化
parallel_max_serversEXEC DBMS_STATS.GATHER_DATABASE_STATS;
表现
排查
free -m
vmstat 1
典型问题
优化
SGA_TARGET
PGA_AGGREGATE_TARGET
cat /proc/sys/vm/swappiness
# 建议 10 以内
表现
排查
iostat -x 1
常见问题
优化
| 问题 | 影响 |
|---|---|
| SGA 太小 | 频繁物理读 |
| SGA 太大 | 系统内存紧张 |
| PGA 太小 | 排序走磁盘 |
建议
表现
排查
SELECT COUNT(*) FROM v$session;
优化
PROCESSES / SESSIONS非常常见但容易被忽略
SELECT table_name, last_analyzed
FROM dba_tables
WHERE last_analyzed < SYSDATE - 7;
常见问题:
kernel.shmmax 太小fs.file-max 不够sem 参数不对检查
ipcs -l
ulimit -a
ext4 或 xfsnfs 放数据文件noatimeOracle 官方不推荐
cat /sys/kernel/mm/transparent_hugepage/enabled
建议关闭:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
优化
# listener.ora
DIAG_ADR_ENABLED_LISTENER=OFF
top → CPU / 内存iostat → 磁盘free -m → swap你可以补充:
我可以直接帮你给一套针对性优化清单。