如何优化centos上的oracle存储
导读:CentOS 上 Oracle 存储优化实操指南 一 存储架构与布局 优先选用SSD/NVMe作为数据盘,重做日志与归档日志单独落盘,避免与数据文件争用;在具备条件的存储上启用条带化(LVM 条带或阵列条带),提升并发 I/O 带宽。 按...
CentOS 上 Oracle 存储优化实操指南
一 存储架构与布局
- 优先选用SSD/NVMe作为数据盘,重做日志与归档日志单独落盘,避免与数据文件争用;在具备条件的存储上启用条带化(LVM 条带或阵列条带),提升并发 I/O 带宽。
- 按负载类型做I/O 隔离:将数据文件、在线重做日志、归档日志、临时表空间、控制文件分别放置在不同磁盘或阵列上,降低热点争用。
- 文件系统建议选择XFS/ext4,并结合数据库块大小规划挂载选项;避免使用自动挂载的 noatime/nodiratime 以外的过度挂载选项。
- 若底层支持,考虑使用裸设备以获得更稳定的 I/O 时延(需评估维护复杂度)。
二 操作系统与内核参数
- 提升文件与网络资源上限(/etc/sysctl.conf,示例值可按内存与并发量微调):
- fs.aio-max-nr = 1048576
- fs.file-max = 6815744
- kernel.sem = 250 32000 100 128
- 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 = 1048586
- vm.swappiness = 10(减少换页,尽量使用内存缓存)
- kernel.shmmax ≈ 物理内存×0.85(字节);kernel.shmall ≈ shmmax/4096
- 大页(HugePages)建议按 SGA 规模配置,示例:vm.nr_hugepages ≈ 内存(GB)×0.8×0.8/2(向上取整)
- 启用并验证异步 I/O:确保内核与设备支持后,在数据库启用 disk_asynch_io=true,可显著改善 DBWn 写吞吐与整体 I/O 并行度。
- 关闭不必要的系统服务与守护进程,减少资源竞争。
三 Oracle 数据库层存储相关参数与特性
- 内存与 I/O 协同:
- 启用自动内存管理(MEMORY_TARGET/MEMORY_MAX_TARGET)或合理设置 SGA_TARGET 与 PGA_AGGREGATE_TARGET,避免内存与磁盘之间的频繁换页。
- 适度提高DB_WRITER_PROCESSES以匹配多块盘/条带带来的写并行;结合存储队列深度与负载逐步调优。
- 调整DB_FILE_MULTIBLOCK_READ_COUNT以匹配全表扫描与存储条带宽度,减少 I/O 次数(过高可能增大单次 I/O 时延)。
- 表空间与数据布局:
- 为数据、索引、临时分别创建表空间,避免相互干扰;临时表空间按峰值排序/哈希需求规划大小与文件数量。
- 大对象与历史数据优先考虑分区表,便于压缩、管理与迁移。
- 存储优化特性(12c 及以上):
- 利用热图 Heat Map与自动数据优化 ADO实施压缩与存储分层(如“压缩以进行查询/归档”“分层以降低成本/归档”),在不牺牲性能的前提下降低存储占用与成本。
- 结合高级压缩与分区策略,可在保持或提升查询性能的同时显著减少 I/O 与容量需求。
四 日常维护与空间回收
- 空间不足处置优先级:
- 清理过期/无用数据与临时段;对历史数据归档或脱敏后下线。
- 扩展表空间(新增数据文件或扩容现有文件),或迁移对象至容量更充足的表空间。
- 启用表/索引压缩降低占用;对超大表实施分区并按分区归档/压缩/迁移。
- 必要时扩容底层存储或挂载新 LUN。
- 日志与诊断清理(示例):
- 监听日志轮转与清理:
- lsnrctl set log_status off
- 清理 $ORACLE_BASE/diag/tnslsnr/< 实例> /listener/{ alert,trace} 下历史日志
- lsnrctl set log_status on
- 表空间回收与数据文件收缩(需确保高水位以上空间可释放):
- 查询空间与文件路径:
- SELECT tablespace_name, total, free, (total-free) used, … FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;
- SELECT * FROM dba_data_files;
- 碎片整理与收缩:
- ALTER TABLESPACE USERS COALESCE;
- ALTER DATABASE DATAFILE ‘/u01/…/users.dbf’ RESIZE 3G;
- 若无法直接收缩,先将占用该数据文件的表/索引/分区迁移至其他表空间,收缩后再迁回。
- 查询空间与文件路径:
- 监听日志轮转与清理:
五 监控与持续优化
- 建立基于AWR/ADDM与ASH的定期巡检机制,关注 Top SQL、I/O 等待(如 db file sequential/scattered read、log file sync)、SGA/PGA 命中率与 I/O 饱和度,按瓶颈定位调整存储布局与参数。
- 结合热图与 ADO策略评估压缩与分层收益,周期性复核策略执行效果与业务性能表现。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何优化centos上的oracle存储
本文地址: https://pptw.com/jishu/750333.html
