Oracle ASM 深度解析
Oracle ASM 深度解析
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
ASM(Automatic Storage Management)是 Oracle 存储管理[1]:
特性:
- 卷管理
- 文件系统
- I/O 调优
- 镜像
详细见:Oracle ASM 详解。
2. ASM 架构
2.1 组件
- ASM Instance
- Disk Group
- Disk
- AU(Allocation Unit)
- Extent
- File
2.2 AU
- 默认 1MB
- 4MB / 8MB(11g+)
- 大文件高效
2.3 Extent
- 多个 AU
- Variable Extent(11g+)
- 1MB / 4MB / 16MB
- 减少 Extent Map
3. Disk Group
3.1 创建
CREATE DISKGROUP data NORMAL REDUNDANCY
FAILGROUP fg1 DISK '/dev/asm-disk1' NAME disk1
FAILGROUP fg2 DISK '/dev/asm-disk2' NAME disk2
ATTRIBUTE 'au_size' = '4M';
3.2 类型
| 类型 | 镜像 | 最少磁盘 |
|---|---|---|
| External | 无(外部) | 1 |
| Normal | 2-way | 2 |
| High | 3-way | 3 |
3.3 管理
ALTER DISKGROUP data ADD DISK '/dev/asm-disk3';
ALTER DISKGROUP data DROP DISK disk1;
ALTER DISKGROUP data RESIZE ALL;
ALTER DISKGROUP data REBALANCE POWER 8;
4. 镜像
4.1 类型
- Mirror:Normal 2-way
- High 3-way
- Unprotected:External
4.2 文件级
CREATE TABLESPACE ts DATAFILE '+DATA(datafile)'
SIZE 100M
ATTRIBUTE 'compatible.rdbms' = '19.0.0', 'striping' = 'COARSE';
4.3 Failure Group
- 磁盘分组
- 不同 IO 控制器
- 防止单点故障
5. Rebalance
5.1 触发
- 添加磁盘
- 删除磁盘
- 修改 POWER
5.2 过程
1. RBAL 协调
2. ARBn 执行
3. 数据重分布
4. 完成
5.3 POWER
ALTER DISKGROUP data REBALANCE POWER 8;
-- 11g+ 动态
ALTER DISKGROUP data REBALANCE POWER 8 WAIT;
5.4 监控
SELECT group_number, operation, state, power, actual, sofar, est_work
FROM v$asm_operation;
6. ASM 文件
6.1 类型
- Datafile
- Control File
- Redo Log
- Archive Log
- Backup
- SPFILE
- OCR / Voting(GI)
6.2 模板
-- 默认模板
SELECT name, redundancy, stripe FROM v$asm_template;
-- 自定义
ALTER DISKGROUP data ADD TEMPLATE high_pri TEMPLATE
HIGH REDUNDANCY FINE STRIPE;
6.3 别名
ALTER DISKGROUP data ADD ALIAS '+data/orcl/control01.ctl'
FOR '+data/orcl/CONTROLFILE/current.256.1';
7. ASM 实例
7.1 启动
STARTUP NOMOUNT;
-- 或
STARTUP MOUNT;
-- 或
STARTUP;
7.2 参数
- INSTANCE_TYPE = ASM
- ASM_DISKSTRING
- ASM_DISKGROUPS
- ASM_POWER_LIMIT
7.3 进程
- RBAL
- ARBn
- ASMB
- GMON
- KATE
- MARK
8. Flex ASM(12c+)
8.1 概述
- ASM 客户端/服务器
- 失败隔离
- ASM 集群
8.2 优势
- ASM 实例失败不影响 DB
- 多 ASM 实例
- 高可用
9. ASMFD(ASM Filter Driver)
9.1 概述
- 替代 ASMLib
- 内核模块
- 设备过滤
9.2 配置
# 安装
yum install oracleasm-support
# 配置
oracleasm configure -i
# 标记
oracleasm createdisk DISK1 /dev/sdb1
10. ACFS(ASM Cluster File System)
10.1 概述
- 集群文件系统
- 共享文件
- 跨节点
10.2 创建
# 1. 创建 ADVM 卷
asmcmd volcreate -G data -s 10G vol1
# 2. 格式化
mkfs -t acfs /dev/asm/vol1-123
# 3. 挂载
mount -t acfs /dev/asm/vol1-123 /mnt/acfs
10.3 用途
- 共享文件
- Oracle Home
- 应用文件
11. ASM 监控
11.1 磁盘组
SELECT
group_number, name, state, type,
total_mb, free_mb
FROM v$asm_diskgroup;
11.2 磁盘
SELECT
group_number, disk_number, name,
path, mode_status, state,
total_mb, free_mb
FROM v$asm_disk;
11.3 客户端
SELECT * FROM v$asm_client;
11.4 操作
SELECT * FROM v$asm_operation;
12. asmcmd
12.1 命令
asmcmd
ASMCMD> ls
ASMCMD> cd data
ASMCMD> ls -l
ASMCMD> mkdir orcl
ASMCMD> cp +data/orcl/file.dbf /tmp/
ASMCMD> lsdg
ASMCMD> lsdsk
13. 备份恢复
13.1 ASM 备份
-- 不能直接备份 ASM
-- 通过 RMAN
RMAN> BACKUP AS COPY DATABASE FORMAT '+FRA';
13.2 磁盘组恢复
- 磁盘失败:替换
- 多镜像:自动恢复
- 备份恢复:RMAN
14. 常见坑与排错
14.1 ORA-15032 / 15063
- 磁盘不足
- 增加磁盘
- 检查状态
14.2 ORA-15041
- 空间不足
- 增大磁盘
- 清理
14.3 Rebalance 慢
-- POWER
ALTER DISKGROUP data REBALANCE POWER 1024;
-- 异步
ALTER DISKGROUP data REBALANCE POWER 8 NOWAIT;
15. 最佳实践
- Normal Redundancy:冗余
- AU 4M:大文件
- Failure Group:隔离
- Rebalance POWER:性能
- Flex ASM:12c+ 高可用
- ACFS:共享
- ASMFD:替代 ASMLib
- 监控空间:避免满
- 测试恢复:可行
- 文档化:架构
16. 参考资料
[1] Oracle Automatic Storage Management Administrator’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/ostmg/