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安装的核心要点
不少读者在掌握了文件系统安装后,纷纷问:“生产环境用ASM存储怎么装?” 确实,ASM(自动存储管理)作为Oracle自带的存储解决方案,在数据冗余、性能优化上比传统文件系统更有优势,是生产环境的首选。今天这篇就把单实例ASM安装讲透——从ASM磁盘组规划、图形化安装的点点操作,到静默安装的脚本编写,每一步都配具体命令和避坑提示,新手也能一次成功!
前置提醒:ASM安装比文件系统多了“磁盘组配置”环节,需提前准备好物理磁盘或分区;同时确保完成了Oracle 19c环境规划(硬件达标、依赖包齐全、用户权限配置完毕),没做的可以回顾之前的“避坑指南”。
ASM的核心是“磁盘组”——把多个物理磁盘整合为一个逻辑单元,自动实现负载均衡和故障转移。在安装Oracle软件前,必须先规划并创建好ASM磁盘组,这是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块盘)。 |
|
|
|
ASM磁盘可以是物理磁盘、分区或LVM逻辑卷,这里以“裸设备分区”为例,步骤如下(root用户执行):
# 查看服务器磁盘列表(识别新添加的磁盘,如/dev/sdb、/dev/sdc)
lsblk
# 或用fdisk查看
fdisk -l
假设识别到3块新磁盘:/dev/sdb(100GB,用于DATA)、/dev/sdc(150GB,用于RECO)、/dev/sdd(50GB,用于ASM元数据)。
# 对/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的分区。
用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
磁盘标记完成后,可通过图形化(asmca)或命令行(sqlplus)创建磁盘组,这里先讲图形化方式(后续安装中会整合),命令行方式在静默安装部分介绍。
图形化安装的核心是通过VNC连接服务器,用runInstaller向导完成“Oracle软件安装+ASM磁盘组配置+数据库创建”,比文件系统安装多了ASM配置环节。
# root用户安装VNC Server
yum install -y tigervnc-server
# 切换到oracle用户,启动VNC服务
su - oracle
vncserver
# 设置VNC密码,记住显示端口(如:1)
本地用VNC Viewer连接“服务器IP:1”,输入密码后进入图形化桌面。
先解压Oracle 19c安装包到ORACLE_HOME目录(oracle用户执行):
unzip /tmp/LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
cd $ORACLE_HOME
./runInstaller
启动安装向导后,前4步与文件系统安装一致(跳过更新、选择“创建并配置数据库”、服务器级、典型安装),从第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磁盘组。
回到安装向导,此时“Database files location”会自动变为“+DATA”(ASM磁盘组路径),“Recovery options”的恢复区路径设为“+RECO”,其他配置与文件系统一致:
SID设置 :ORCL(与实例名一致);
字符集 :AL32UTF8(支持中文);
内存分配 :物理内存的70%(如32GB内存分配22GB);
密码 :sys/system密码设为Oracle123#(符合复杂度)。
点击“Next”后完成先决条件检查(若ASM磁盘状态正常,会提示“All prerequisite checks passed”),确认概要信息后点击“Install”开始安装。
安装过程中会提示用root用户执行两个脚本(/u01/app/oraInventory/orainstRoot.sh和$ORACLE_HOME/root.sh),执行完成后回到安装界面点击“OK”,等待安装完成。
避坑提示:若先决条件检查提示“ASM磁盘不可用”,检查oracleasm listdisks是否显示磁盘,或重新标记ASM磁盘。
生产环境ASM安装推荐用静默方式,核心是编写“Oracle软件安装+ASM磁盘组创建+数据库创建”三个响应文件,实现全自动化部署。
相比文件系统静默安装,ASM安装多了ASM磁盘组创建步骤,需要新增asmca.rsp响应文件。三个核心响应文件模板路径均在$ORACLE_HOME/assistants/下。
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
关键参数修改如下(其他默认):
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
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
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
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.”表示软件安装成功。
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
编辑~/.bash_profile,添加ASM实例环境变量:
vi ~/.bash_profile
# 新增ASM环境变量
export ORACLE_SID =+ASM
export PATH = $ORACLE_HOME/bin: $PATH
# 生效
source ~/.bash_profile
# 切换回数据库实例环境变量(若需要)
export ORACLE_SID =ORCL
# 执行静默创建命令
dbca -silent -responseFile /tmp/rsp/dbca.rsp -logfile /tmp/dbca.log
日志监控:tail -f /tmp/dbca.log,出现“Database created successfully”表示数据库创建成功。
#!/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"
| 错误现象 | 报错原因 | 解决办法 |
|---|---|---|
| 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磁盘组和实例”的检查,需完成以下四步验证:
# 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
# 切换到数据库实例环境变量
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
# 本地连接
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/...
# 查看ASM进程(ora_pmon_+ASM等)
ps -ef | grep +ASM | grep -v grep
# 查看数据库进程(ora_pmon_ORCL等)
ps -ef | grep ORCL | grep -v grep
若两类进程都存在,说明ASM实例和数据库实例都正常运行。
ASM安装虽然比文件系统多了磁盘组配置环节,但只要抓住核心要点,就不会出错:
磁盘准备是基础 :必须将磁盘标记为ASM可用磁盘,否则ASM无法识别;
磁盘组规划要合理 :至少分DATA和RECO,冗余模式结合RAID选择;
环境变量别混淆 :ASM实例(+ASM)和数据库实例(ORCL)的环境变量要区分,切换时注意修改;
验证要全面 :不仅要验证数据库,还要确认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/ ,如需转载,请注明出处,否则将追究法律责任。