Linux 上 Oracle 数据库运行慢通常不是一个单一原因,而是 系统资源、参数配置、SQL、存储、网络 等多个因素叠加的结果。下面给你一个常见原因排查清单 + 对应解决思路,你可以按顺序对照。
Oracle 非常吃内存,Linux 内存不够会直接导致性能暴跌。
表现
wa排查
free -h
top
vmstat 1
重点看
解决
show parameter sga_target;
show parameter pga_aggregate_target;
Oracle 对磁盘 IO 极其敏感。
表现
iostat 中 %util 接近 100%排查
iostat -x 1
常见原因
解决
noatime,nodiratime
Oracle 对 Linux 内核参数要求很高。
重点参数
kernel.shmmax
kernel.shmall
vm.swappiness
vm.dirty_ratio
建议
vm.swappiness = 1~5
避免频繁 swap。
并不是数据库慢,而是 SQL 慢。
排查
select * from v$sqlarea order by elapsed_time desc;
常见原因
解决
explain plan for select ...
Oracle 依赖统计信息生成执行计划。
表现
解决
exec dbms_stats.gather_table_stats(...);
表现
排查
archive log list;
解决
表现
排查
select * from v$lock;
select * from v$session_wait;
常见原因
排查
ping db_host
tnsping orcl
排查
top
看 st 列
top → CPU / 内存 / swapiostat → IOfree -h → 内存你可以直接贴出:
top / iostat / free -h 输出我可以帮你 精准定位是哪一类问题,而不是泛泛而谈。