Oracle 数据库 ASM 自动存储管理

1.1、ASM 架构

ASM(Automatic Storage Management)是Oracle提供的卷管理和文件系统解决方案,集成了文件系统和卷管理器的功能。12c+版本的ASM支持:

  • **自动条带化:**ASM磁盘组自动条带化和镜像
  • **冗余保护:**Normal/High/External三种冗余级别
  • **动态扩展:**在线添加/删除磁盘,自动重平衡
  • **集群文件系统:**支持ACFS(ASM Cluster File System)

**Flex ASM:**Flex ASM(12c+),实例可远程访问ASM

1.2、磁盘组管理

sql 复制代码
-- 创建磁盘组
CREATE DISKGROUP DATA NORMAL REDUNDANCY
  FAILGROUP fg1 DISK
    '/dev/sdb' NAME DATA_001,
    '/dev/sdc' NAME DATA_002
  FAILGROUP fg2 DISK
    '/dev/sdd' NAME DATA_003,
    '/dev/sde' NAME DATA_004
  ATTRIBUTE 'au_size' = '4M';

-- 创建高冗余磁盘组(用于REDO)
CREATE DISKGROUP REDO HIGH REDUNDANCY
  FAILGROUP fg1 DISK '/dev/sdf' NAME REDO_001
  FAILGROUP fg2 DISK '/dev/sg' NAME REDO_002
  FAILGROUP fg3 DISK '/dev/sdh' NAME REDO_003;

-- 查看磁盘组状态
SELECT name, state, type, total_mb, free_mb,
       ROUND(free_mb/total_mb*100, 1) free_pct
FROM v$asm_diskgroup;

-- 添加磁盘到磁盘组(在线重平衡)
ALTER DISKGROUP DATA ADD
  FAILGROUP fg1 DISK '/dev/sdi' NAME DATA_005
  FAILGROUP fg2 DISK '/dev/sdj' NAME DATA_006
  REBALANCE POWER 8;

-- 查看重平衡进度
SELECT group_number, operation, state, power, est_minutes
FROM v$asm_operation;

实例:ASM 磁盘组在线扩容

S --- Situation **(场景):**某核心数据库使用ASM管理存储,DATA磁盘组使用率达到85%,包含200个数据文件,每天新增数据约50GB,预计3周后磁盘空间将耗尽。业务要求扩容过程中不能停库。

T --- Task **(任务):**在线扩展DATA磁盘组容量,确保重平衡期间数据库性能可接受。

A --- Action(行动):

1、评估当前I/O负载,选择业务低峰期(凌晨2点)执行;

2、 添加4块新磁盘(每块2TB),分两个Failgroup各2块:

sql 复制代码
ALTER DISKGROUP DATA ADD
     FAILGROUP fg1 DISK '/dev/sdk' NAME DATA_007,
               '/dev/sdl' NAME DATA_008
     FAILGROUP fg2 DISK '/dev/sdm' NAME DATA_009,
               '/dev/sdn' NAME DATA_010
     REBALANCE POWER 4; -- 使用较低功率减少性能影响

3、监控重平衡进度:

SELECT * FROM v$asm_operation;

4、重平衡完成后提升到POWER 10加速剩余数据迁移。

R --- Result **(结果):**DATA磁盘组容量从20TB扩展至28TB,使用率降至60%。重平衡总耗时约4小时,期间数据库响应时间增加约15%(可接受范围)。重平衡完成后I/O吞吐量提升约20%(更多磁盘并行读写)。

1.3、ASM 过滤(ASM Filter Driver)

Oracle 12.2+引入ASM Filter Driver(AFD),替代传统的ASMLib和udev规则:

sql 复制代码
-- 标记磁盘为ASM候选盘
$ asmcmd afd_label DATA01 /dev/sdb --init
$ asmcmd afd_label DATA02 /dev/sdc --init

-- 查看AFD磁盘
$ asmcmd afd_lslbl

-- 在ASM中使用AFD磁盘
CREATE DISKGROUP DATA EXTERNAL REDUNDANCY
  DISK 'AFD:DATA01', 'AFD:DATA02';
相关推荐
老年DBA1 小时前
ZFS存储池配置终极指南
运维·数据库
CableTech_SQH1 小时前
江苏理工学院武进绿建区协同创新园智能化建设 F5G 全光方案百盛分析报告
大数据·网络·数据库·5g·信息与通信
jimy12 小时前
Oracle云e2.1.micro优化tailscale的exit模式网速
linux·服务器·oracle
楼田莉子2 小时前
Linux网络:网络多路IO模型详解
linux·网络·数据库
wen_zhufeng2 小时前
python-dotenv 使用文档
数据库·python·oracle
phltxy2 小时前
Redis Java 集成到 Spring Boot
数据库·redis·git
dadaobusi2 小时前
PCIe的ATS和PRS
java·网络·数据库
汽车仪器仪表相关领域2 小时前
HORIBA MEXA-584L 全功能汽车排放废气分析仪:便携精准排放检测 + 多参数同步测量 + 国六 / 欧 7 合规适配,汽车检测与调校的黄金标准
服务器·数据库·人工智能·功能测试·汽车·压力测试·可用性测试
qq_366086222 小时前
SQL 中 OR 与 UNION ALL选择指南
数据库·sql