在 Ubuntu 上运行 Oracle 数据库 出现卡顿,通常不是单一原因,而是系统资源、Oracle 配置、磁盘 I/O 或参数设置共同导致的。下面按最常见原因 → 排查方法 → 解决建议来说明。
Oracle 对内存非常敏感。
表现
sqlplus 登录慢排查
free -h
top
如果:
available 很小swap 被大量使用✅ 说明内存不足
解决
Ubuntu 默认服务器可能内存不大,但 Oracle 默认参数偏大。
典型问题
SGA_TARGET 设置过大PGA_AGGREGATE_TARGET 过高查看
show parameter sga
show parameter pga
建议(示例,4G 内存服务器)
ALTER SYSTEM SET sga_target=1G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=500M SCOPE=SPFILE;
重启数据库生效。
Oracle 是 I/O 密集型数据库。
常见情况
排查
iostat -x 1
看:
%util 接近 100%await 很高✅ 说明磁盘瓶颈
解决
很多人直接装 Oracle,但没改内核参数。
关键参数
/etc/sysctl.conf
示例:
kernel.shmmax = 4294967296
kernel.shmall = 1048576
fs.file-max = 6815744
vm.swappiness = 10
应用:
sysctl -p
Ubuntu 默认 swappiness=60,对 Oracle 极不友好。
表现
解决
sysctl -w vm.swappiness=10
如果是远程连接卡,本地不卡:
排查
lsnrctl status
ping db_host
tnsping service_name
解决
/etc/hosts 配置正确⚠️ 官方不支持 Ubuntu
常见问题:
建议
free -h
top
iostat -x 1
df -h
lsnrctl status
✅ Ubuntu + Docker Oracle
docker run -d \
-p 1521:1521 \
-e ORACLE_PASSWORD=oracle \
container-registry.oracle.com/database/express:21.3.0-xe
你可以补充:
我可以直接给你一份针对性调优方案。