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';
相关推荐
一只fish9 小时前
Oracle官方文档翻译《Database Concepts 26ai》第21章-Oracle AI 数据库中的AI
数据库·人工智能·oracle
Database_Cool_11 小时前
云原生多租户隔离 + 近实时分析怎么选型?阿里云 AnalyticDB MySQL 资源隔离方案
数据库·mysql·阿里云
小马爱打代码17 小时前
Redis 集群方案详解:主从复制、哨兵、脑裂、分片集群和哈希槽
数据库·redis·哈希算法
海南java第二人19 小时前
ClickHouse 稀疏索引深度解析:为什么 OLAP 数据库不用 B-Tree?
数据库·clickhouse
Litluecat19 小时前
信创迁移:Oracle切换海量数据库,慢sql扫描
数据库·sql·oracle·信创·海量
消失在人海中19 小时前
Oracle的CURRENT REDO丢失,数据丢失风险分析
数据库·oracle
喵了几个咪20 小时前
选择第三方IAM还是自建权限体系?中小型后台系统权限架构决策指南
数据库·oracle·架构
Elastic 中国社区官方博客21 小时前
Kibana:使用 AI Chat 及 MCP 轻松创建 AI 原生仪表板
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·信息可视化
杨云龙UP21 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检