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

ASMRDBMS
SID+ASMorcl
启动nomountmount/open
文件数据库数据文件
用户sysasmsysdba

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;

详细见:Oracle ASM Rebalance 详解


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
- 影响业务
- 低峰

详细见:Oracle ASM Rebalance 详解


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. 最佳实践

  1. ASM 存储推荐:现代
  2. EXTERNAL Redundancy:外部 RAID
  3. AU 4MB:大库
  4. OMF:简化
  5. asmcmd:管理
  6. 监控 v$asm:及时
  7. Rebalance POWER:业务影响
  8. Disk 数量均衡:failgroup
  9. ASMFD 替代 ASMLib:推荐
  10. 文档化:配置

19. 参考资料

[1] Oracle Automatic Storage Management Administrator’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/ostmg/