Oracle ASM 安装详解
Oracle ASM 安装详解
适用版本:Oracle Database 19c 文档版本:v1.0 / 2026-07
1. 概述
ASM 是 Oracle 推荐的存储管理[1]:
优势:
- 自动管理
- I/O 负载均衡
- 镜像冗余
- 在线操作
详细见:Oracle ASM 详解。
2. ASM 架构
┌─────────────────────────────────┐
│ Oracle Database (RDBMS) │
└────────────┬────────────────────┘
│ ASM I/O
┌────────────▼────────────────────┐
│ ASM Instance │
│ - ASM 进程 │
│ - Disk Group 管理 │
└────────────┬────────────────────┘
│
┌────────────▼────────────────────┐
│ ASM Disk │
│ /dev/oracleasm/disks/DATA │
└─────────────────────────────────┘
3. ASM 实例
3.1 vs RDBMS
| 项 | ASM | RDBMS |
|---|---|---|
| SID | +ASM | orcl |
| 启动 | nomount | mount/open |
| 文件 | 数据库 | 数据文件 |
| 用户 | sysasm | sysdba |
3.2 进程
- ARBn:Rebalance
- ASMB:ASM Background
- GMON:Disk Group Monitor
- KATE:Konductor ASM Temporary Extent
- MARK:Marking AU
详细见:Oracle 后台进程详解。
4. 安装方式
4.1 单独 ASM
- grid 用户
- 单独 ORACLE_HOME
- 独立 ASM 实例
4.2 GI 集成
- GI 包含 ASM
- 推荐
- RAC + ASM
详细见:Oracle GI 19c 安装详解。
5. 配置 ASM Disk
5.1 ASMLib
# 安装
dnf install -y oracleasm-support oracleasmlib
# 配置
oracleasm configure -i
# - oracle / dba / y / y
# 加载
oracleasm init
# 创建磁盘
oracleasm createdisk OCR1 /dev/sdb1
oracleasm createdisk DATA /dev/sdc1
oracleasm createdisk FRA /dev/sdd1
# 扫描
oracleasm scandisks
# 列表
oracleasm listdisks
5.2 ASMFD
# grid 用户
asmcmd afd_configure
asmcmd afd_label OCR1 /dev/sdb1
asmcmd afd_label DATA /dev/sdc1
asmcmd afd_lsdsk
详细见:Oracle ASMFD 配置详解。
5.3 UDEV
# /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sdb1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdc1", OWNER="grid", GROUP="asmadmin", MODE="0660"
udevadm control --reload-rules
udevadm trigger
6. 安装 GI(含 ASM)
6.1 用户
groupadd -g 54321 oinstall
groupadd -g 54328 asmadmin
groupadd -g 54329 asmdba
groupadd -g 54330 asmoper
useradd -u 54331 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
passwd grid
6.2 目录
mkdir -p ******
mkdir -p ******
chown -R grid:oinstall /u01/app
6.3 响应文件
# grid_install.rsp
oracle.install.option=HA_CONFIG
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/19.0.0/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
oracle.install.asm.SYSASMPassword=******
oracle.install.asm.diskGroup.name=DATA
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/DATA
6.4 静默
./gridSetup.sh -silent -responseFile /tmp/grid_install.rsp
6.5 root
/u01/app/oraInventory/orainstRoot.sh
/u01/app/19.0.0/grid/root.sh
7. ASM 实例管理
7.1 启停
# 启动
sqlplus / as sysasm
SQL> STARTUP;
# 停止
SQL> SHUTDOWN IMMEDIATE;
7.2 srvctl
srvctl status asm
srvctl start asm
srvctl stop asm
srvctl config asm
8. Disk Group 创建
8.1 asmca
asmca -silent -createDiskGroup \
-diskGroupName DATA \
-diskList /dev/oracleasm/disks/DATA \
-redundancy EXTERNAL
8.2 SQL
CREATE DISKGROUP DATA EXTERNAL REDUNDANCY
DISK '/dev/oracleasm/disks/DATA'
ATTRIBUTE 'au_size' = '4M',
'compatible.asm' = '19.0.0.0',
'compatible.rdbms' = '19.0.0.0';
8.3 多盘
CREATE DISKGROUP DATA NORMAL REDUNDANCY
DISK '/dev/oracleasm/disks/DATA1',
'/dev/oracleasm/disks/DATA2',
'/dev/oracleasm/disks/DATA3'
ATTRIBUTE 'au_size' = '4M';
9. Disk Group 管理
9.1 添加磁盘
ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/disks/DATA4';
9.2 删除磁盘
ALTER DISKGROUP DATA DROP DISK DATA_0003;
9.3 Rebalance
ALTER DISKGROUP DATA REBALANCE POWER 8;
-- 查看进度
SELECT group_number, operation, state, power, actual, sofar, est_work, est_rate, est_minutes
FROM v$asm_operation;
9.4 MOUNT/UNMOUNT
ALTER DISKGROUP DATA MOUNT;
ALTER DISKGROUP DATA DISMOUNT;
10. 文件管理
10.1 创建
CREATE TABLESPACE users DATAFILE '+DATA' SIZE 100M;
CREATE TABLESPACE users DATAFILE '+DATA(DATAFILE)' SIZE 100M;
10.2 OMF
ALTER SYSTEM SET db_create_file_dest = '+DATA';
CREATE TABLESPACE users;
10.3 asmcmd
asmcmd ls +DATA
asmcmd ls +DATA/orcl/datafile
asmcmd cd +DATA/orcl/datafile
asmcmd ls -l
11. 模板
11.1 内置
- DATAFILE
- ONLINELOG
- ARCHIVELOG
- CONTROLFILE
- PARAMETERFILE
- DATAGUARDCONFIG
- CHANGETRACKING
- FLASHBACK
- XTRANSPORT
- DUMPSET
- AUTOBACKUP
11.2 创建
ALTER DISKGROUP DATA ADD TEMPLATE my_datafile ATTRIBUTES (HOT MIRRORHOT);
12. 冗余
12.1 EXTERNAL
- 外部 RAID
- ASM 不镜像
- 性能
12.2 NORMAL
- 2-way
- 2 个 failgroup
- 默认
12.3 HIGH
- 3-way
- 3 个 failgroup
- 高可用
13. AU
13.1 大小
- 1MB(默认)
- 2MB / 4MB
- variable AU
13.2 设置
CREATE DISKGROUP DATA EXTERNAL REDUNDANCY
DISK '/dev/oracleasm/disks/DATA'
ATTRIBUTE 'au_size' = '4M';
详细见:Oracle ASM 详解。
14. 监控
14.1 视图
-- Disk Group
SELECT group_number, name, state, type, total_mb, free_mb FROM v$asm_diskgroup;
-- Disk
SELECT group_number, disk_number, name, path, mode_status, state, total_mb, free_mb FROM v$asm_disk;
-- 客户端
SELECT * FROM v$asm_client;
-- 操作
SELECT * FROM v$asm_operation;
14.2 asmcmd
asmcmd lsdg
asmcmd lsdsk
asmcmd lsop
asmcmd iostat
15. 性能
15.1 I/O
SELECT group_number, disk_number, reads, writes, read_time, write_time, bytes_read, bytes_written
FROM v$asm_disk_iostat;
15.2 Rebalance
- POWER 1-1024
- 影响业务
- 低峰
16. 备份
16.1 ASM 文件
asmcmd cp +DATA/orcl/datafile/users.259.123456 /tmp/users.dbf
16.2 RMAN
RMAN> BACKUP AS COPY DATABASE FORMAT '+FRA';
详细见:Oracle RMAN 备份恢复。
17. 常见坑与排错
17.1 ORA-15032 / 15063
- Disk 不足
- 检查
17.2 ORA-15041
- Diskgroup 空间
- 添加磁盘
17.3 ASM Disk 不可见
oracleasm scandisks
oracleasm listdisks
17.4 Disk Group 不 Mount
sqlplus / as sysasm
ALTER DISKGROUP DATA MOUNT FORCE;
18. 最佳实践
- ASM 存储推荐:现代
- EXTERNAL Redundancy:外部 RAID
- AU 4MB:大库
- OMF:简化
- asmcmd:管理
- 监控 v$asm:及时
- Rebalance POWER:业务影响
- Disk 数量均衡:failgroup
- ASMFD 替代 ASMLib:推荐
- 文档化:配置
19. 参考资料
[1] Oracle Automatic Storage Management Administrator’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/ostmg/