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';
相关推荐
AlickLbc25 分钟前
DM-V8数据库证书过期处理过程记录
数据库
l1t25 分钟前
DeepSeek总结的五分钟测试:Ted Dunning 谈 DuckDB 为何让分析更轻松
数据库·sql·duckdb
超级新零售41 分钟前
零售 SaaS 与本地部署,技术责任边界究竟怎么分?
数据库·零售
考虑考虑1 小时前
瀚高数据库
数据库·后端·postgresql
dishugj2 小时前
oracle日志切换三条命令区别
数据库
Patrick在香港2 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
悟道书生2 小时前
(一)Navicate为什么转存结构和数据只转存表而不包含建库?
数据库·oracle
赤龙ERP2 小时前
ERP周报:连接器开闸、国产GPU进场与智能工厂253家
数据库·人工智能·大模型·rpa·erp·企业数字化·builderpattern
lusklusklusk3 小时前
SQL Server补丁版本号为什么“日期新反而版本低”?——GDR、CU、CU+GDR 版本号规则与升级路径详解
数据库
key_3_feng3 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent