ITPub博客

首页 > 数据库 > Oracle > 04 手把手部署Oracle 19c——单实例ASM安装全流程(图形化+静默)

04 手把手部署Oracle 19c——单实例ASM安装全流程(图形化+静默)

原创 Oracle 作者:shuchaoyang 时间:2026-01-21 22:57:10 0 删除 编辑

04 手把手部署Oracle 19c——单实例ASM安装全流程(图形化+静默) 一、先搞懂核心:ASM磁盘组规划与创建 1.1 ASM磁盘组规划原则(生产环境必看) 1.2 实操:创建ASM磁盘(以CentOS 7为例) 1.2.1 识别磁盘 1.2.2 磁盘分区 1.2.3 标记ASM磁盘(关键步骤) 1.3 创建ASM磁盘组(两种方式) 二、图形化安装:新手友好,ASM配置一步到位 2.1 前置:VNC远程连接配置(同文件系统安装) 2.2 图形化安装全流程(核心步骤) 2.2.1 步骤5:存储类型选择(核心差异点) 2.2.2 步骤6:数据库存储配置 2.2.3 后续步骤(与文件系统一致) 三、静默安装:生产首选,ASM脚本化部署 3.1 核心响应文件:新增ASM配置文件(asmca.rsp) 3.2 步骤1:准备并修改响应文件(oracle用户执行) 3.2.1 复制模板文件 3.2.2 修改db_install.rsp(软件安装,含ASM支持) 3.2.3 修改asmca.rsp(创建ASM磁盘组) 3.2.4 修改dbca.rsp(创建数据库,ASM存储) 3.3 步骤2:执行静默安装(分四步) 3.3.1 静默安装Oracle软件(oracle用户) 3.3.2 静默创建ASM磁盘组(oracle用户) 3.3.3 配置ASM环境变量(oracle用户) 3.3.4 静默创建数据库(oracle用户) 3.4 生产环境静默安装完整脚本(含注释) 3.5 ASM安装常见错误及解决办法 四、安装后验证:确认ASM与数据库都正常 4.1 验证ASM实例与磁盘组(oracle用户) 4.2 验证数据库监听状态(oracle用户) 4.3 数据库连接测试(oracle用户) 4.4 关键进程确认(root用户) 五、ASM安装的核心要点

04 手把手部署Oracle 19c——单实例ASM安装全流程(图形化+静默)

不少读者在掌握了文件系统安装后,纷纷问:“生产环境用ASM存储怎么装?” 确实,ASM(自动存储管理)作为Oracle自带的存储解决方案,在数据冗余、性能优化上比传统文件系统更有优势,是生产环境的首选。今天这篇就把单实例ASM安装讲透——从ASM磁盘组规划、图形化安装的点点操作,到静默安装的脚本编写,每一步都配具体命令和避坑提示,新手也能一次成功!

前置提醒:ASM安装比文件系统多了“磁盘组配置”环节,需提前准备好物理磁盘或分区;同时确保完成了Oracle 19c环境规划(硬件达标、依赖包齐全、用户权限配置完毕),没做的可以回顾之前的“避坑指南”。

一、先搞懂核心:ASM磁盘组规划与创建

ASM的核心是“磁盘组”——把多个物理磁盘整合为一个逻辑单元,自动实现负载均衡和故障转移。在安装Oracle软件前,必须先规划并创建好ASM磁盘组,这是ASM安装的基础。

1.1 ASM磁盘组规划原则(生产环境必看)

至少创建3个磁盘组,分别存储不同类型文件,避免IO冲突,这是Oracle官方推荐的最佳实践:

磁盘组名称 存储内容 磁盘要求 冗余模式
DATA 数据文件、控制文件 SSD优先,容量≥100GB(生产) 外部冗余(依赖RAID)/ 正常冗余(2块盘)
RECO 归档日志、备份集 机械硬盘或SSD,容量≥DATA的1.5倍 外部冗余(依赖RAID)/ 正常冗余(2块盘)
FRA 快速恢复区(可选,也可合并到RECO) 同RECO 同RECO
冗余模式选择:如果服务器做了RAID,选“外部冗余”(由RAID保障数据安全);没做RAID选“正常冗余”(ASM自动镜像,至少2块盘)。


1.2 实操:创建ASM磁盘(以CentOS 7为例)

ASM磁盘可以是物理磁盘、分区或LVM逻辑卷,这里以“裸设备分区”为例,步骤如下(root用户执行):

1.2.1 识别磁盘


# 查看服务器磁盘列表(识别新添加的磁盘,如/dev/sdb、/dev/sdc)

lsblk
# 或用fdisk查看
fdisk -l

假设识别到3块新磁盘:/dev/sdb(100GB,用于DATA)、/dev/sdc(150GB,用于RECO)、/dev/sdd(50GB,用于ASM元数据)。

1.2.2 磁盘分区


# 对/dev/sdb进行分区(其他磁盘操作相同)

fdisk /dev/sdb

# 输入以下命令(按提示操作)
n   # 新建分区
p   # 主分区
1   # 分区号
(回车默认起始扇区)
(回车默认结束扇区,或输入 +100G指定大小)
t   # 修改分区类型
8e   # 类型设为Linux LVM(ASM支持此类型)
w   # 保存退出

# 分区完成后,查看分区结果
fdisk -l /dev/sdb   # 会显示/dev/sdb1分区

重复以上操作,完成/dev/sdc1、/dev/sdd1的分区。

1.2.3 标记ASM磁盘(关键步骤)

用Oracle的asmca工具标记磁盘,让ASM识别为可用磁盘。先安装ASM依赖包(root用户):

yum install -y oracleasm-support oracleasmlib oracleasm-`uname -r`

然后配置ASM库并标记磁盘:


# 初始化ASM库(仅第一次执行)

oracleasm init

# 配置ASM磁盘组所属用户组(oinstall)
oracleasm configure -i
# 按提示输入:oracle用户、oinstall组

# 标记磁盘为ASM磁盘(命名规则:asm-磁盘用途-序号)
oracleasm createdisk ASM_DATA_01 /dev/sdb1
oracleasm createdisk ASM_RECO_01 /dev/sdc1
oracleasm createdisk ASM_META_01 /dev/sdd1

# 查看标记后的ASM磁盘(状态为AVAILABLE表示正常)
oracleasm listdisks

1.3 创建ASM磁盘组(两种方式)

磁盘标记完成后,可通过图形化(asmca)或命令行(sqlplus)创建磁盘组,这里先讲图形化方式(后续安装中会整合),命令行方式在静默安装部分介绍。

二、图形化安装:新手友好,ASM配置一步到位

图形化安装的核心是通过VNC连接服务器,用runInstaller向导完成“Oracle软件安装+ASM磁盘组配置+数据库创建”,比文件系统安装多了ASM配置环节。

2.1 前置:VNC远程连接配置(同文件系统安装)


# root用户安装VNC Server

yum install -y tigervnc-server

# 切换到oracle用户,启动VNC服务
su - oracle
vncserver
# 设置VNC密码,记住显示端口(如:1)

本地用VNC Viewer连接“服务器IP:1”,输入密码后进入图形化桌面。

2.2 图形化安装全流程(核心步骤)

先解压Oracle 19c安装包到ORACLE_HOME目录(oracle用户执行):

unzip /tmp/LINUX.X64_193000_db_home.zip 
-d 
$ORACLE_HOME

cd $ORACLE_HOME
./runInstaller

启动安装向导后,前4步与文件系统安装一致(跳过更新、选择“创建并配置数据库”、服务器级、典型安装),从第5步“关键配置项”开始差异显现:

2.2.1 步骤5:存储类型选择(核心差异点)

在“Storage type”选项中,选择“Automatic Storage Management (ASM)”,然后点击“ASM Configuration”进入ASM配置界面:

  • 若未创建ASM磁盘组,选择“Create new ASM disk group”;

  • 输入ASM磁盘组名称(如DATA),选择冗余模式(如External);

  • 在“Disks Available”中勾选标记好的ASM磁盘(如ASM_DATA_01),点击“OK”;

  • 设置ASM实例的SYS用户密码(如Asm_123#),点击“Next”。

重复以上操作,创建RECO磁盘组。

2.2.2 步骤6:数据库存储配置

回到安装向导,此时“Database files location”会自动变为“+DATA”(ASM磁盘组路径),“Recovery options”的恢复区路径设为“+RECO”,其他配置与文件系统一致:

  • SID设置 :ORCL(与实例名一致);

  • 字符集 :AL32UTF8(支持中文);

  • 内存分配 :物理内存的70%(如32GB内存分配22GB);

  • 密码 :sys/system密码设为Oracle123#(符合复杂度)。

2.2.3 后续步骤(与文件系统一致)

点击“Next”后完成先决条件检查(若ASM磁盘状态正常,会提示“All prerequisite checks passed”),确认概要信息后点击“Install”开始安装。

安装过程中会提示用root用户执行两个脚本(/u01/app/oraInventory/orainstRoot.sh和$ORACLE_HOME/root.sh),执行完成后回到安装界面点击“OK”,等待安装完成。

避坑提示:若先决条件检查提示“ASM磁盘不可用”,检查oracleasm listdisks是否显示磁盘,或重新标记ASM磁盘。

三、静默安装:生产首选,ASM脚本化部署

生产环境ASM安装推荐用静默方式,核心是编写“Oracle软件安装+ASM磁盘组创建+数据库创建”三个响应文件,实现全自动化部署。

3.1 核心响应文件:新增ASM配置文件(asmca.rsp)

相比文件系统静默安装,ASM安装多了ASM磁盘组创建步骤,需要新增asmca.rsp响应文件。三个核心响应文件模板路径均在$ORACLE_HOME/assistants/下。

3.2 步骤1:准备并修改响应文件(oracle用户执行)

3.2.1 复制模板文件


mkdir 
-p /tmp/rsp

cd $ORACLE_HOME/assistants/
# 复制三个核心响应文件
cp dbca/dbca.rsp /tmp/rsp/
cp asmca/asmca.rsp /tmp/rsp/
cp ../install/response/db_install.rsp /tmp/rsp/
cd /tmp/rsp

3.2.2 修改db_install.rsp(软件安装,含ASM支持)

关键参数修改如下(其他默认):


vi db_install.rsp


# 安装类型:仅安装软件(后续手动创建数据库)
oracle.install .option =INSTALL_DB_SWONLY
# 基础路径(与环境变量一致)
UNIX_GROUP_NAME =oinstall
INVENTORY_LOCATION =/u01/app/oraInventory
ORACLE_BASE =/u01/app/oracle
ORACLE_HOME =/u01/app/oracle/product/19.3.0/dbhome_1
# 数据库版本:企业版
oracle.install.db .InstallEdition =EE
# 启用ASM支持
oracle.install.db .isCustomInstall = true
oracle.install.db .asmSupport = true
# 跳过更新
oracle.install.db.updates .enabled = false
# 自动执行root脚本
oracle.install.db.rootconfig .executeRootScript = true

3.2.3 修改asmca.rsp(创建ASM磁盘组)


vi asmca.rsp


# 操作类型:创建磁盘组
operation_type =create
# ASM实例配置
asm_instance_sid =+ASM
asm_instance_password =Asm_123 #  # ASM的SYS用户密码
# DATA磁盘组配置
diskgroup_name[0] =DATA
redundancy[0] =EXTERNAL   # 外部冗余
disk[0] =/dev/oracleasm/disks/ASM_DATA_01   # ASM磁盘路径
# RECO磁盘组配置
diskgroup_name[1] =RECO
redundancy[1] =EXTERNAL
disk[1] =/dev/oracleasm/disks/ASM_RECO_01

3.2.4 修改dbca.rsp(创建数据库,ASM存储)


vi dbca.rsp


# 操作类型:创建数据库
operationType =createDatabase
createDatabase .type =typical
# 数据库名和实例名
gdbName =ORCL
sid =ORCL
# 密码配置
sysPassword =Oracle123 #
systemPassword =Oracle123 #
# 存储配置(核心:ASM磁盘组)
storageType =ASM
datafileDestination =+DATA
recoveryAreaDestination =+RECO
# 字符集和内存
characterSet =AL32UTF8
totalMemory = 22528   # 32GB内存分配22GB(单位MB)
# 自动备份
enableArchive = true

3.3 步骤2:执行静默安装(分四步)

3.3.1 静默安装Oracle软件(oracle用户)


cd 
$ORACLE_HOME

./runInstaller -silent -responseFile /tmp/rsp/db_install.rsp -log /tmp/oracle_install.log

日志监控:tail -f /tmp/oracle_install.log,出现“Successfully Setup Software.”表示软件安装成功。

3.3.2 静默创建ASM磁盘组(oracle用户)

asmca -silent -responseFile /tmp/rsp/asmca.rsp -logfile /tmp/asmca.log

日志监控:tail -f /tmp/asmca.log,出现“Diskgroup created successfully”表示磁盘组创建成功。可通过asmcmd验证:

asmcmd

lsdg   # 会显示DATA和RECO磁盘组,状态为MOUNTED

3.3.3 配置ASM环境变量(oracle用户)

编辑~/.bash_profile,添加ASM实例环境变量:


vi ~/.bash_profile

# 新增ASM环境变量
export ORACLE_SID =+ASM
export PATH = $ORACLE_HOME/bin: $PATH
# 生效
source ~/.bash_profile

3.3.4 静默创建数据库(oracle用户)


# 切换回数据库实例环境变量(若需要)

export ORACLE_SID =ORCL
# 执行静默创建命令
dbca -silent -responseFile /tmp/rsp/dbca.rsp -logfile /tmp/dbca.log

日志监控:tail -f /tmp/dbca.log,出现“Database created successfully”表示数据库创建成功。

3.4 生产环境静默安装完整脚本(含注释)


#!/bin/bash

# Oracle 19c 单实例ASM静默安装完整脚本
# 适用环境:CentOS 7/8,已完成磁盘分区和ASM标记

# 1. 全局变量(根据实际环境修改)
ORACLE_BASE =/u01/app/oracle
ORACLE_HOME = $ORACLE_BASE/product/19.3.0/dbhome_1
RSP_DIR =/tmp/rsp
INSTALL_FILE =/tmp/LINUX.X64_193000_db_home.zip
SYS_PWD =Oracle123 #
ASM_PWD =Asm_123 #
TOTAL_MEM = 22528   # 内存(MB)

# 2. root用户操作:安装依赖包和ASM库
su - root -c "yum install -y binutils compat-libcap1 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make oracleasm-support oracleasmlib oracleasm-`uname -r`"

# 3. root用户操作:配置ASM磁盘(若未配置)
# su - root -c "oracleasm init"
# su - root -c "oracleasm configure -i"
# su - root -c "oracleasm createdisk ASM_DATA_01 /dev/sdb1"
# su - root -c "oracleasm createdisk ASM_RECO_01 /dev/sdc1"

# 4. oracle用户操作:解压安装包
su - oracle -c "unzip $INSTALL_FILE -d $ORACLE_HOME "

# 5. oracle用户操作:创建响应文件目录并复制模板
su - oracle -c "mkdir -p $RSP_DIR "
su - oracle -c "cp $ORACLE_HOME /assistants/dbca/dbca.rsp $RSP_DIR /"
su - oracle -c "cp $ORACLE_HOME /assistants/asmca/asmca.rsp $RSP_DIR /"
su - oracle -c "cp $ORACLE_HOME /install/response/db_install.rsp $RSP_DIR /"

# 6. oracle用户操作:修改db_install.rsp
su - oracle -c "sed -i 's/oracle.install.option=.*/oracle.install.option=INSTALL_DB_SWONLY/' $RSP_DIR /db_install.rsp"
su - oracle -c "sed -i 's/ORACLE_BASE=.*/ORACLE_BASE= $ORACLE_BASE /' $RSP_DIR /db_install.rsp"
su - oracle -c "sed -i 's/ORACLE_HOME=.*/ORACLE_HOME= $ORACLE_HOME /' $RSP_DIR /db_install.rsp"
su - oracle -c "sed -i 's/oracle.install.db.asmSupport=.*/oracle.install.db.asmSupport=true/' $RSP_DIR /db_install.rsp"
su - oracle -c "sed -i 's/oracle.install.db.rootconfig.executeRootScript=.*/oracle.install.db.rootconfig.executeRootScript=true/' $RSP_DIR /db_install.rsp"

# 7. oracle用户操作:修改asmca.rsp
su - oracle -c "sed -i 's/operation_type=.*/operation_type=create/' $RSP_DIR /asmca.rsp"
su - oracle -c "sed -i 's/asm_instance_sid=.*/asm_instance_sid=+ASM/' $RSP_DIR /asmca.rsp"
su - oracle -c "sed -i 's/asm_instance_password=.*/asm_instance_password= $ASM_PWD /' $RSP_DIR /asmca.rsp"
su - oracle -c "sed -i 's/diskgroup_name\[0\]=.*/diskgroup_name[0]=DATA/' $RSP_DIR /asmca.rsp"
su - oracle -c "sed -i 's/redundancy\[0\]=.*/redundancy[0]=EXTERNAL/' $RSP_DIR /asmca.rsp"
su - oracle -c "sed -i 's/disk\[0\]=.*/disk[0]=\/dev\/oracleasm\/disks\/ASM_DATA_01/' $RSP_DIR /asmca.rsp"
su - oracle -c "sed -i 's/diskgroup_name\[1\]=.*/diskgroup_name[1]=RECO/' $RSP_DIR /asmca.rsp"
su - oracle -c "sed -i 's/redundancy\[1\]=.*/redundancy[1]=EXTERNAL/' $RSP_DIR /asmca.rsp"
su - oracle -c "sed -i 's/disk\[1\]=.*/disk[1]=\/dev\/oracleasm\/disks\/ASM_RECO_01/' $RSP_DIR /asmca.rsp"

# 8. oracle用户操作:修改dbca.rsp
su - oracle -c "sed -i 's/operationType=.*/operationType=createDatabase/' $RSP_DIR /dbca.rsp"
su - oracle -c "sed -i 's/gdbName=.*/gdbName=ORCL/' $RSP_DIR /dbca.rsp"
su - oracle -c "sed -i 's/sid=.*/sid=ORCL/' $RSP_DIR /dbca.rsp"
su - oracle -c "sed -i 's/sysPassword=.*/sysPassword= $SYS_PWD /' $RSP_DIR /dbca.rsp"
su - oracle -c "sed -i 's/systemPassword=.*/systemPassword= $SYS_PWD /' $RSP_DIR /dbca.rsp"
su - oracle -c "sed -i 's/storageType=.*/storageType=ASM/' $RSP_DIR /dbca.rsp"
su - oracle -c "sed -i 's/datafileDestination=.*/datafileDestination=+DATA/' $RSP_DIR /dbca.rsp"
su - oracle -c "sed -i 's/recoveryAreaDestination=.*/recoveryAreaDestination=+RECO/' $RSP_DIR /dbca.rsp"
su - oracle -c "sed -i 's/totalMemory=.*/totalMemory= $TOTAL_MEM /' $RSP_DIR /dbca.rsp"

# 9. oracle用户操作:静默安装Oracle软件
su - oracle -c " $ORACLE_HOME /runInstaller -silent -responseFile $RSP_DIR /db_install.rsp -log /tmp/oracle_install.log"

# 10. oracle用户操作:静默创建ASM磁盘组
su - oracle -c "asmca -silent -responseFile $RSP_DIR /asmca.rsp -logfile /tmp/asmca.log"

# 11. oracle用户操作:配置环境变量并创建数据库
su - oracle -c "echo 'export ORACLE_SID=ORCL' >> ~/.bash_profile"
su - oracle -c "source ~/.bash_profile"
su - oracle -c "dbca -silent -responseFile $RSP_DIR /dbca.rsp -logfile /tmp/dbca.log"

# 12. 安装完成提示
echo "Oracle 19c ASM单实例安装完成!"
echo "日志路径:/tmp/oracle_install.log、/tmp/asmca.log、/tmp/dbca.log"

3.5 ASM安装常见错误及解决办法

错误现象 报错原因 解决办法
asmca创建磁盘组失败,提示“磁盘不可用” 磁盘未标记为ASM磁盘,或权限不足 1. 执行oracleasm listdisks查看磁盘;2. 重新标记磁盘:oracleasm createdisk;3. 检查磁盘权限:chown oracle:oinstall /dev/sdb1
静默安装软件时,提示“ASM支持缺失” 未安装ASM依赖包,或db_install.rsp未启用ASM支持 1. 安装oracleasm-support等依赖包;2. 确保db_install.rsp中oracle.install.db.asmSupport=true
数据库创建失败,提示“+DATA磁盘组未挂载” ASM实例未启动,或磁盘组未挂载 1. 启动ASM实例:sqlplus / as sysasm → startup;2. 挂载磁盘组:alter diskgroup DATA mount;
asmcmd无法连接,提示“ORA-12514” ASM监听未启动 1. 配置ASM监听:netca -silent -responseFile /tmp/rsp/netca.rsp;2. 启动监听:lsnrctl start LISTENER_ASM

四、安装后验证:确认ASM与数据库都正常

ASM安装的验证比文件系统多了“ASM磁盘组和实例”的检查,需完成以下四步验证:

4.1 验证ASM实例与磁盘组(oracle用户)


# 1. 切换到ASM实例环境变量

export ORACLE_SID =+ASM

# 2. 登录ASM实例
sqlplus / as sysasm

# 3. 查看ASM实例状态
select status from v $instance;   # 应为OPEN

# 4. 查看磁盘组状态
select name, state, total_mb, free_mb from v $asm_diskgroup;   # 应为MOUNTED,有可用空间

# 5. 或用asmcmd查看
asmcmd lsdg

4.2 验证数据库监听状态(oracle用户)


# 切换到数据库实例环境变量

export ORACLE_SID =ORCL

# 查看监听状态(确保包含ASM和数据库服务)
lsnrctl status

# 正常输出应包含:
# Service "+ASM" has 1 instance(s). Instance "+ASM", status READY
# Service "ORCL" has 1 instance(s). Instance "ORCL", status READY

4.3 数据库连接测试(oracle用户)


# 本地连接

sqlplus / as sysdba

# 远程连接
sqlplus sys/Oracle123 #@192.168.1.100:1521/ORCL as sysdba

# 验证数据库存储路径(确认使用ASM磁盘组)
select name from v$datafile ;   # 路径应为+DATA/ORCL/DATAFILE/...
select member from v$logfile ;   # 路径应为+DATA/ORCL/ONLINELOG/...

4.4 关键进程确认(root用户)


# 查看ASM进程(ora_pmon_+ASM等)

ps -ef | grep +ASM | grep -v grep

# 查看数据库进程(ora_pmon_ORCL等)
ps -ef | grep ORCL | grep -v grep

若两类进程都存在,说明ASM实例和数据库实例都正常运行。

五、ASM安装的核心要点

ASM安装虽然比文件系统多了磁盘组配置环节,但只要抓住核心要点,就不会出错:

  1. 磁盘准备是基础 :必须将磁盘标记为ASM可用磁盘,否则ASM无法识别;

  2. 磁盘组规划要合理 :至少分DATA和RECO,冗余模式结合RAID选择;

  3. 环境变量别混淆 :ASM实例(+ASM)和数据库实例(ORCL)的环境变量要区分,切换时注意修改;

  4. 验证要全面 :不仅要验证数据库,还要确认ASM实例和磁盘组状态。

掌握了ASM安装,你在生产环境的Oracle运维能力就又上了一个台阶。接下来我们会讲解Oracle 19c RAC——2节点实例安装全流程(图形化+静默),关注我,带你系统掌握Oracle 19c运维技能!

原文链接: https://mp.weixin.qq.com/s/tdRBrzP7bAnzfotEwAa-8w

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/291614/viewspace-3108580/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303497