温馨提示×

ubuntu下oracle怎优化

小樊
34
2026-10-29 00:20:14
栏目: 云计算

在 Ubuntu 下运行 Oracle 数据库(通常是 Oracle 19c / 21c,或旧版 11g/12c),优化可以从 系统层、Oracle 参数层、SQL 层、存储层 四个方面来做。下面给你一套实用优化清单。


一、Ubuntu 系统层优化

1. 内核参数(非常重要)

编辑 /etc/sysctl.conf:

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmax = 4294967295
kernel.shmall = 1073741824
kernel.shmmni = 4096
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

执行:

sysctl -p

2. 用户资源限制

编辑 /etc/security/limits.conf:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

确保 pam_limits.so 已启用。


3. 关闭不必要的服务

systemctl disable snapd
systemctl disable bluetooth

4. 文件系统建议

  • 使用 XFS / EXT4
  • 挂载选项:
defaults,noatime,nodiratime

二、Oracle 内存与参数优化

1. 使用 AMM / ASMM

SHOW PARAMETER memory_target;
SHOW PARAMETER sga_target;

推荐(示例,8G 内存):

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

重启数据库生效。


2. 关键参数优化

ALTER SYSTEM SET processes=500 SCOPE=SPFILE;
ALTER SYSTEM SET open_cursors=1000 SCOPE=BOTH;
ALTER SYSTEM SET session_cached_cursors=200 SCOPE=BOTH;
ALTER SYSTEM SET undo_retention=1800 SCOPE=BOTH;

3. 日志与闪回

ALTER SYSTEM SET log_buffer=16M SCOPE=SPFILE;
ALTER SYSTEM SET fast_start_mttr_target=300 SCOPE=BOTH;

三、SQL 与索引优化(最关键)

1. 使用 AWR 分析

@?/rdbms/admin/awrrpt.sql

关注:

  • 高 CPU SQL
  • 高逻辑读 SQL
  • 全表扫描

2. 常见优化手段

  • 建立 合适索引
  • 避免 SELECT *
  • 避免 LIKE '%xx%'
  • 使用绑定变量
  • 大表分区(PARTITION)

3. 统计信息

EXEC DBMS_STATS.GATHER_SCHEMA_STATS('USERNAME');

四、存储与 IO 优化

1. 数据文件分离

  • 数据文件
  • redo log
  • archivelog
  • temp

放在不同磁盘


2. Redo Log 优化

SELECT group#, members, bytes FROM v$log;

推荐:

  • 至少 3 组
  • 每组 512MB–1GB

3. 使用异步 IO

ALTER SYSTEM SET filesystemio_options=SETALL SCOPE=SPFILE;
ALTER SYSTEM SET disk_asynch_io=TRUE SCOPE=SPFILE;

五、Ubuntu + Oracle 常见坑

问题 解决
启动慢 关闭 avahi / snap
ORA-27102 调整 shmmax
中文乱码 设置 NLS_LANG
性能差 检查 swap 是否频繁

六、快速优化检查清单 ✅

  • [ ] sysctl 已配置
  • [ ] limits 已配置
  • [ ] memory_target 合理
  • [ ] 统计信息最新
  • [ ] 慢 SQL 已优化
  • [ ] redo / 数据文件分离

如果你能告诉我:

  • Oracle 版本
  • Ubuntu 版本
  • 内存大小
  • 主要用途(OLTP / 报表 / 测试)

我可以给你一套 针对性参数模板。

0 踩