Ubuntu环境下Oracle数据库存储配置建议
noatime,nodiratime(避免每次读取文件都更新访问时间,减少不必要的磁盘写入)、data=writeback(提高写入效率,但需配合数据库日志保障数据一致性)。示例命令:mount -o noatime,nodiratime,data=writeback /dev/sdb1 /u01
allocsize参数(如allocsize=1M)可减少小文件写入的碎片;确保文件系统块大小(如mkfs.xfs -b size=4096)与Oracle数据块大小(通常8KB)对齐,避免额外的I/O操作。mq-deadline或bfq调度器不适合Oracle的高并发顺序I/O。NVMe设备推荐none(无调度器,发挥NVMe的并行优势);SATA SSD推荐deadline(保证I/O请求的公平性,减少延迟)。查看当前调度器:cat /sys/block/sdX/queue/scheduler
修改为deadline并永久生效(创建/etc/udev/rules.d/60-ioscheduler.rules文件,添加ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline")。/sys/block/sdX/queue/nr_requests,如设置为256),提升并发I/O处理能力;/etc/fstab中为Oracle挂载点添加aio=1参数,并在Oracle中设置DISK_ASYNCH_IO=TRUE),减少I/O等待时间。/u01/oradata:数据文件(高频读写);/u02/redo:Redo日志(顺序写入);/u03/archive:归档日志(大量写入);/u04/temp:临时表空间(排序/大查询临时数据)。v$filestat:查看数据文件的I/O次数、读取时间(识别热点文件);v$event_histogram:查看慢I/O事件(如db file sequential read、db file scattered read);log file sync)、资源消耗。iostat -xm 1 5:监控磁盘利用率(%util>80%表示磁盘饱和)、I/O等待时间(await<10ms为理想值);iotop:实时查看哪个进程占用磁盘I/O(如Oracle的dbwriter进程);blktrace + btt:深度分析I/O行为(如定位某个SQL的慢I/O根源)。