首页 >
问答 >
云计算 >
Ubuntu Oracle性能调优实战指南
Ubuntu Oracle性能调优实战指南
小樊
33
2025-11-17 03:11:19
Ubuntu Oracle性能调优实战指南
一 基线评估与监控
建立可观测性:定期生成并对比 AWR/ADDM 报告,快速定位 CPU、I/O、锁等待 等瓶颈;AWR 脚本位于 @?/rdbms/admin/awrrpt.sql ,ADDM 脚本位于 @?/rdbms/admin/addmrpt.sql 。结合 v$sysstat、v$session 等动态视图观察会话与系统级指标,形成持续基线。
关注关键等待:如 db file sequential read (索引/单块读)、free buffer waits (缓冲池不足)、以及日志相关等待,用于判断索引/缓存/日志配置是否合理。
统计信息与健康度:使用 DBMS_STATS 收集表/索引统计信息,确保优化器生成高效执行计划;对大表/高频变更对象提高收集频率。
二 操作系统与存储层优化
存储与I/O路径:优先选用 SSD/NVMe ,并尽量将数据文件、Redo 日志 、归档日志 分离到不同物理磁盘或 LVM 卷 ,降低I/O争用。
文件系统与挂载:选择 XFS (适合大文件与高并发),挂载时启用 noatime,nodiratime 减少元数据写入;必要时可结合 read_ahead_kb 提升顺序读。
I/O 调度器:按介质选择调度器——NVMe 推荐 none (避免额外调度开销),SATA SSD 推荐 deadline (平衡吞吐与延迟)。
异步 I/O:在 Oracle 启用 FILESYSTEMIO_OPTIONS=SETALL 与 DISK_ASYNCH_IO=TRUE ,提升I/O并发与提交性能。
内存与透明大页:适度降低 vm.swappiness (如 10 )以减少换页;在内存较大场景启用 HugePages 降低 TLB 开销并提升大页命中。
三 Oracle内存与关键参数
内存分配建议:在 16GB 内存的示例环境中,可设置 SGA_TARGET=8G 、PGA_AGGREGATE_TARGET=2G ;一般建议 SGA 占物理内存 30%–70% 、PGA 占 5%–25% 。也可启用 AMM (MEMORY_TARGET/MEMORY_MAX_TARGET )简化管理。
共享池与日志缓冲:根据并发与SQL复杂度调整 SHARED_POOL_SIZE (如 500M ),并设置 SHARED_POOL_RESERVED_SIZE (如 50M )保护高频对象;高并发事务可适当增大 LOG_BUFFER (如 10M )。
Redo 日志配置:创建 ≥3 个 Redo Log Group ,每组 ≥2 个成员 并分布在不同磁盘;将单个日志文件大小提升到 500MB–1GB ,减少日志切换频率与等待。
四 SQL与索引设计
索引策略:为 WHERE/JOIN/ORDER BY 的高选择性列创建 B-Tree 索引;多列条件遵循 最左前缀 ;在 数据仓库 场景对低基数列可用 位图索引 ;使用 覆盖索引 避免回表;定期重建碎片化索引并清理未使用索引。
SQL 编写与执行计划:避免 **SELECT ,使用 绑定变量 降低硬解析;用 EXPLAIN PLAN 与 DBMS_XPLAN 分析执行计划,必要时使用提示(如 **/ + INDEX */ )纠正计划偏差;子查询优先改写为 JOIN ,大数据量时 EXISTS 往往优于 IN 。
分区裁剪:对百万/千万级大表按 时间/范围/哈希 分区,查询仅扫描相关分区;结合业务增长 动态增删分区 ,保持分区粒度与数据生命周期管理。
五 并行处理与变更流程
并行执行:对大表/批量作业设置对象级并行度(如 ALTER TABLE t PARALLEL (DEGREE 4); ),在 SQL 中使用 */*+ PARALLEL(t,4) / 提示,或在会话级开启 ALTER SESSION SET parallel_degree_policy=AUTO; 让 Oracle 随负载自适应分配并行度。
变更流程与容量规划:任何参数或结构变更先在 测试环境 验证,再灰度/维护窗口上线;持续清理无用对象(临时表、旧索引)并复核 连接池/最大连接数 与存储容量,避免资源争用与空间抖动。