- 首页 >
- 问答 >
-
云计算 >
- 如何优化centos上的oracle配置
如何优化centos上的oracle配置
小樊
36
2025-11-27 18:56:10
CentOS 上 Oracle 配置优化实操指南
一 操作系统与存储层优化
- 内存与大页
- 适度降低 swap 倾向:设置 vm.swappiness=10,减少换页对数据库的影响。
- 启用大页(HugePages)以减少 TLB 缺失与共享内存碎片:计算并配置 vm.nr_hugepages,确保 HugePages 总量略大于实例的 SGA_TARGET(或 memory_target 的 SGA 部分)。使用大页后,在数据库启用 USE_LARGE_PAGES=ONLY(或 ONLY 后验证)。
- 内核与网络
- 提升文件与 AIO 能力:fs.aio-max-nr=1048576、fs.file-max=6815744。
- 信号量与端口:kernel.sem=250 32000 100 128;net.ipv4.ip_local_port_range=9000 65500。
- TCP 缓冲与连接队列:net.core.rmem_default=262144、net.core.rmem_max=4194304、net.core.wmem_default=262144、net.core.wmem_max=1048576;net.core.somaxconn=4096。
- 存储与 I/O
- 优先使用 SSD/NVMe,并采用条带化(RAID 0/1+0 或 LVM 条带)分散 I/O。
- 将 数据文件、重做日志、归档日志、临时表空间 分离到不同物理/逻辑设备,降低热点与争用。
- 启用异步 I/O:确认系统 AIO 可用,设置数据库参数 DISK_ASYNCH_IO=TRUE,提升 DBWn 写吞吐。
二 Oracle 内存与实例参数优化
- 内存目标与策略
- 若服务器专供数据库,可将约 80% 物理内存分配给 Oracle;在 11g 及以上可用 AMM(memory_target/memory_max_target),或采用 ASMM(sga_target/pga_aggregate_target)。启用 AMM 需将 STATISTICS_LEVEL=TYPICAL/ALL。
- SGA 与组件
- 典型分配:SGA 约占可用内存的 1/3~1/2;OLTP 场景建议 DB_CACHE_SIZE 命中率 ≥95%。可按需调整 SHARED_POOL_SIZE、LARGE_POOL_SIZE、JAVA_POOL_SIZE;LOG_BUFFER 在重做压力大时适度增大。
- PGA 与排序/哈希
- 启用 PGA 自动管理:WORKAREA_SIZE_POLICY=AUTO,设置 PGA_AGGREGATE_TARGET。经验值:OLTP 约占总内存的 20%,DSS 约占 50%(以专供内存的 80% 为基数估算)。
- 并发与会话
- 依据负载设置 PROCESSES/SESSIONS(如各 200 起步),并合理规划连接池与最大连接,避免连接风暴。
示例(11g 自动内存管理,需重启生效)
- ALTER SYSTEM SET memory_max_target=16G SCOPE=SPFILE;
- ALTER SYSTEM SET memory_target=12G SCOPE=SPFILE;
- ALTER SYSTEM SET sga_target=0 SCOPE=SPFILE;
- ALTER SYSTEM SET pga_aggregate_target=0 SCOPE=SPFILE;
- 重启实例后确认:SHOW PARAMETER memory_target; SHOW PARAMETER sga_target; SHOW PARAMETER pga_aggregate_target;
三 磁盘 I/O 与检查点优化
- 文件布局
- 分离 数据文件/索引/临时/回滚/重做日志/归档 的存放路径,避免单盘/单阵列成为瓶颈。
- 重做日志
- 合理增大 重做日志文件大小 与 日志组数量,减少日志切换与检查点抖动;将日志置于高性能磁盘/阵列。
- 检查点与恢复
- 在 OLTP 场景可适当提高检查点频率以降低恢复时间,但需权衡 I/O 峰值;避免过于频繁的增量检查点造成抖动。
- 全表扫描与多块读
- 通过索引设计与统计信息优化,减少 长表全表扫描;结合负载与存储调优 DB_FILE_MULTIBLOCK_READ_COUNT,降低全扫 I/O 次数。
四 SQL、索引与统计维护
- SQL 与执行计划
- 避免 **SELECT ***,使用 绑定变量 降低硬解析;结合 EXPLAIN PLAN/DBMS_XPLAN 与 SQL Monitor 定位高成本操作。
- 索引策略
- 为高频过滤/连接列建立合适索引;避免过多或重复索引;对大表考虑 分区表/分区索引 以降低扫描与维护成本。
- 统计信息与计划稳定性
- 定期收集统计信息:EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>‘SCHEMA’, estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt=>‘FOR ALL COLUMNS SIZE AUTO’, cascade=>TRUE);
- 并发与锁
- 合理设计事务粒度与隔离级别,减少长事务与锁等待;结合 V$SESSION_WAIT / V$SYSTEM_EVENT 识别热点等待并优化。
五 监控、诊断与变更流程
- 基线与分析
- 定期生成 AWR/ADDM 报告,关注 Top SQL、等待事件、I/O 与内存命中率;结合 ASH 做短时段热点定位。
- 操作系统监控
- 使用 sar -d / iostat -x 观察磁盘利用率、队列与响应时间;结合 v$filestat 定位高 I/O 数据文件。
- 变更与回退
- 参数调整遵循“评估—备份—灰度—验证—回退”的流程;对 memory_target/sga_target/pga_aggregate_target 等重启参数,务必在维护窗口操作并准备回退方案。