简介:面向Oracle DBA与系统管理员的Oracle 11g R2 Grid Infrastructure在Windows 64位环境的安装配置资料,针对集群管理、高可用存储等核心场景,适合需要搭建Oracle RAC或学习Clusterware、ASM的进阶用户。包体共1495个文件,以jar组件、dll运行库、exe安装配置程序为主,辅以htm文档、xml配置、rsp响应文件与集群验证脚本,压缩包约682MB。内容详解从安装前软硬件检查、依赖组件准备,到创建集群、配置OCR与Voting Disk、初始化ASM磁盘组,再到监听与命名服务、crs_stat验证的完整链路,其中包含响应文件与验证脚本,可辅助自动化安装与集群状态检查,并穿插常见排错思路。已有373人学习参考,对于准备在Windows 64位环境中部署Oracle Grid Infrastructure的技术人员具有直接借鉴价值。
1. 手里的 win64_11gR2_grid.zip 不是普通压缩包:它是 Oracle 11gR2 在 Windows Server 上跑 ASM 的唯一入口
搜索这个文件名的人,大概率是刚在 Windows Server 上装完数据库软件准备建库,却发现存储类型列表里根本没有 ASM 选项。原因很简单:从 11gR2 开始,Oracle 把 ASM 从数据库安装包里拆了出去,单独打包成 Grid Infrastructure(GI)。也就是说,win64_11gR2_grid.zip 就是 Oracle 11g Release 2 Grid Infrastructure 针对 Windows x64 的官方安装介质,想用 ASM 统一管理数据库文件,就得先把这个 zip 里的 GI 装好。它解决的问题很具体:不用把数据文件堆在 C 盘目录里,而是用裸盘或者分区做成 ASM 磁盘组,让数据库文件落在更可控的存储上。适合的读者是 Windows 平台上的 DBA、运维工程师,以及从 Linux 环境转过来、对 11gR2 集群件不熟的从业者。接下来按实际安装顺序,把这个 zip 从解压到验证讲清楚,包括哪些步骤能省、哪些坑不能踩。
2. 解压前先想清三件事:包结构、Home 路径、给 ASM 用的磁盘
2.1 zip 解压后是什么:setup.exe、response 目录和 stage 目录各管什么
先纠正一个常见误操作:不要直接双击 zip 里的 setup.exe 尝试“以压缩包方式安装”。OUI 安装器需要读取相对路径下的 stage 内容,并往临时目录写文件,zip 包内运行时经常在中途报“无法定位 stage”或者路径错乱。正确做法是用 7-Zip 完整解压到纯英文路径,比如C:\grid_install,再执行解压后的 setup.exe。
解压后你会看到这几个东西,各自分工如下:
| 路径/文件 | 作用 | 安装时需要做什么 |
|---|---|---|
| setup.exe | 安装主入口,图形安装从这里启动 | 双击或配合 -silent 参数执行 |
| response/ | 静默安装用的 rsp 响应文件模板 | 照着模板复制一份再改参数 |
| stage/ | 实际产品文件和组件,占 zip 体积大头 | 保持完整,不要手动删减里面内容 |
| welcome.htm | 官方快速说明页 | 看一眼即可,不依赖它拿配额 |
| rpm/ 或 third_party/ | 依赖组件,比如 VC++ 运行库 | 如果系统里缺,OUI 会从这里自动装 |
解压时要留意两个异常:一是 7-Zip 报“Unexpected end of archive”或“加密头损坏”,这是下载不完整导致,官方发布的 GI 包不会带伪加密,出现这种提示基本就是文件头坏了,重新下载而不是尝试修复;二是解压后 stage 目录大小异常,通常它占整体体积的大部分,如果解压完只有几百 MB,基本可以确认包被截断。解压目标盘的空间按“解压后体积再多留 30%”准备,安装过程中 OUI 还要在 stage 里再做一次展开。
2.2 三个关键路径变量:ORACLE_BASE、ORACLE_HOME 与 Windows 账号
单机 ASM 虽然不需要配 SCAN 和心跳网卡,但环境变量一个都不能少。OUI 在安装时会把路径写进 Windows 注册表,后续服务启动时读的是系统级环境变量。用用户级变量或者普通 cmd 窗口里临时 export,装完大概率“服务起来了但 ASM 实例找不到 home”。
我一般会这样准备账号和环境变量:
# 管理员 PowerShell 执行 # 1. 创建 grid 账号并加入管理员组,GI 在 Windows 上不允许用普通用户安装 net user grid "YourP@ssw0rd" /add net localgroup Administrators grid /add # 2. 预建 ASM 相关的本地组,OUI 安装时也会自动创建,提前建好更稳妥 net localgroup ORA_ASM_OSDBA /add net localgroup ORA_ASM_OSOPER /add # 3. 写系统级环境变量,/M 表示 Machine 级别,服务启动时才能读到 setx ORACLE_BASE "C:\app\grid" /M setx ORACLE_HOME "C:\app\grid\11.2.0\grid" /M setx ORACLE_SID "+ASM" /M参数说明:ORACLE_BASE 是 GI 的根目录,日志、诊断文件都会挂在它下面;ORACLE_HOME 指向实际的 Grid Home,网上常见的目录结构是C:\app\grid\11.2.0\grid,解压包安装后也会把文件放这里;ORACLE_SID 固定写+ASM,不要改成别的名字,单机 ASM 实例的 SID 就是它。PATH 里要追加%ORACLE_HOME%\bin,但注意不要反复setx PATH "%PATH%;...",Windows 的环境变量有 1024 字符限制,追加几次就截断。更稳的做法是先echo %PATH%备份一份,再一次性把 bin 目录加进去。
grid 账号的密码要满足复杂度要求,长度至少 8 位且包含字母和数字,否则 OUI 在权限校验阶段会直接拒绝。
2.3 网络、磁盘与端口的准备清单:静态 IP 和裸盘是关键
单机 ASM 对网络依赖比 RAC 小得多,但 OUI 在安装时仍会做主机名解析检查。最常见的翻车点是 Windows Server 用了 DHCP,重启后 IP 变了,安装时的 CVD 检查报“public 网络无法解析”。所以先把网卡改成静态 IP,并确认主机名能 ping 通自己的 IP。
存储侧的准备比网络更关键。给 ASM 用的磁盘不要格式化,不要分配盘符,磁盘管理里保持“未分配”状态。原因是 ASM 要直接读写盘头元数据,如果盘上已经有 NTFS 文件系统或者 Windows 偷偷创建的隐藏分区,ASM 读盘头时会认为盘不可用。虚拟化环境里尤其要检查:Hyper-V 的虚拟磁盘如果中途做过快照合并,盘内的分区表残留可能造成候选盘为 0。
端口方面,默认要放行 1521 给 ASM 监听。单机模式不需要 SCAN 和 GNS,所以那些 1522、1575 之类的端口不用刻意开,防火墙里放行 1521 就够。数据库实例的监听通常也在 1521,注意数据库监听和 ASM 监听共用端口时不要冲突,后面建库时如果报监听地址被占用,先查是不是 ASM 实例已经占了 1521。
| 准备项 | 最低要求 | 踩过的问题 |
|---|---|---|
| IP 地址 | 静态 IP,主机名可解析 | DHCP 导致 CVD 检查失败 |
| ASM 磁盘 | 裸盘或裸分区,无文件系统 | NTFS 残留导致候选盘为 0 |
| 防火墙 | 放行 1521 | 数据库监听和 ASM 监听端口冲突 |
| 磁盘空间 | 比 zip 解压体积多留 30% | stage 解包空间不足,安装中断 |
3. 图形化安装跑通最小 ASM:从 setup.exe 到配置脚本
3.1 安装类型三条路的分叉点:Cluster、Standalone 与 Software Only
双击 setup.exe 后,OUI 会先做一次本机环境扫描,然后进入安装类型选择页。这一步的分叉决定了后面几十个配置项。常见做法是选“Install and Configure Oracle Grid Infrastructure”,然后在配置场景里选 Standalone Server(独立服务器)模式,这是单机 ASM 的唯一正解。
为什么不选 Cluster 模式?Cluster 模式需要配置两到三块网卡、SCAN 名称、GNS,还要额外的主机间 SSH 互信,在 Windows 上纯属给自己找麻烦。11gR2 的 GI 在 Windows 上定位就是单机 ASM,Cluster 模式在 Windows 上支持度也远不如 Linux,别被“Grid”这个词误导。
第三条路是“Software Only”,只解包安装文件,不创建 ASM 实例,后面手工跑 ASMCA 来配置。这个选项适合已经装了 GI 但又想重新配置磁盘组的场景。第一次安装建议直接走 Install and Configure,让 OUI 顺手把 OCR 和表决盘写进初始磁盘组,省得后面手工初始化 OCR。如果你对 ASMCA 的流程很熟,也可以 Software Only 装完再用 ASMCA 补配,两种路径最后得到的东西一致。
3.2 磁盘组在哪一步创建:初始 DATA 组、SYS 口令与 ASMSNMP
选完 Standalone Server 后,OUI 会进到磁盘组配置页。这里要填三样东西:磁盘组名称、冗余级别、以及加入磁盘组的候选盘。
磁盘组名称我习惯用 DATA,和后面数据库文件路径保持一致。冗余级别在 Windows 单机上基本只能选 External——External 代表 ASM 不做冗余,靠底层 RAID 或存储阵列保证数据安全。如果用的是本机单块磁盘又选了 Normal,ASM 会要求至少两个 failgroup,单盘上根本凑不出来,装到一半会卡住。
关键是候选盘列表。此刻页面上看到的“候选磁盘”不是所有裸盘,而是已经打过 ASM 标记的盘。Windows 上没有 Linux 那种/dev/sdb路径,ASM 靠盘头的 OracleASM 标记来识别盘。给物理盘打标记的工具是 GI 自带的 asmtool,位于%ORACLE_HOME%\bin下。用法是用管理员权限打开 cmd,执行asmtool -help看参数,-add用于给盘打标记并命名,-list查看当前哪些盘已经被 ASM 识别。打完标记后回到 OUI 点“重新发现”,盘才会出现在候选列表里。这一步的常见误用是直接在磁盘管理里格式化后再拿来当候选盘,实际上格式化反而把盘弄脏,ASM 可能拒绝接纳。
口令设置页里要设 SYSASM 和 ASMSNMP 两组口令。SYSASM 是 ASM 实例的最高权限账号,ASMSNMP 是给 OEM 或 Enterprise Manager 监控 ASM 用的。两组口令都要符合 Oracle 的密码复杂度要求,至少 8 位、字母数字混合。如果后面建库时 DBCA 报无法连上 ASM 实例,先确认这两组口令没记混,ASMSNMP 不是 SYSASM 的别名。
3.3 安装进行到 95% 要求执行配置脚本:这一步在 Windows 上到底做了什么
图形安装进行到 92% 到 95% 时,OUI 会弹窗提示:需要在管理员权限的 cmd 里执行一个配置脚本。脚本路径在弹窗里明确显示,常见位置是C:\app\grid\11.2.0\grid\crs\config\gridconfig.bat(不同小版本文件名可能略有差异,以弹窗提示为准)。
:: 管理员 CMD 中执行,路径以 OUI 弹窗为准 cd /d C:\app\grid\11.2.0\grid\crs\config gridconfig.bat这个脚本做的事比表面看起来多得多:第一,把 OCR 和表决盘写入前面创建的 ASM 磁盘组;第二,在 Windows 服务管理器里注册三个核心服务,分别是 OracleCRSService(集群同步服务)、OracleASMService+ASM(ASM 实例服务)、OracleClusterVolumeService(集群卷服务);第三,在注册表里固化 grid home 路径和 ASM 实例参数。执行完回到安装器点 OK,OUI 才会继续做完 relink 和最后的清理。
为什么 Windows 上不让它自动执行?因为 OUI 的进程权限和“管理员 cmd”不完全一致,脚本里要调用 net localgroup 修改本地组、写盘头、注册 Windows 服务,这些操作需要真实的管理员令牌。直接双击 bat 会闪退或者中途报权限不足,原因是工作目录不对导致 perl 脚本找不到依赖,而不是脚本本身有问题。执行前确认当前 cmd 窗口里set ORACLE_HOME能输出正确路径,否则脚本第一步就失败。
4. 静默安装 response file:在无桌面的 Windows Server 上照样装完
4.1 最小可用的 grid_install.rsp:哪些键必须手工写
生产环境的 Windows Server 很多时候不开图形桌面,或者运维人员只能通过远程管理端口连进去。这时候走 OUI 图形界面不现实,静默安装是唯一可靠路径。zip 解压后的response目录里有官方 rsp 模板,复制一份改成grid_install_w64.rsp,只改少量键值就能用。
一个最小可用的单机 ASM response file 长这样:
# grid_install_w64.rsp # 注意 rsp 是 Java properties 格式,路径里的反斜杠要双写 oracle.install.option=INSTALL ORACLE_BASE=C:\\app\\grid ORACLE_HOME=C:\\app\\grid\\11.2.0\\grid oracle.install.asm.OSDBA=ORA_ASM_OSDBA oracle.install.asm.OSOPER=ORA_ASM_OSOPER oracle.install.asm.SYSASMPassword=Passw0rd#ASM oracle.install.asm.monitorPassword=Passw0rd#ASM oracle.install.asm.diskGroup.name=DATA oracle.install.asm.diskGroup.redundancy=EXTERNAL # Windows 上磁盘发现串通常留空,靠 ASM_DISKSTRING 自动发现 # oracle.install.asm.diskGroup.disks=参数说明:oracle.install.option=INSTALL表示全新安装,如果你拿这个模板去做升级,要改成 UPGRADE;OSDBA 和 OSOPER 对应 Windows 本地组 ORA_ASM_OSDBA、ORA_ASM_OSOPER,这两个组如果没提前建,安装器会报错;SYSASMPassword 和 monitorPassword 分别对应图形界面里的 SYSASM 和 ASMSNMP 口令,两处密码可以一样,但建议分开设置。磁盘组相关键里,redundancy 只写 EXTERNAL,不要试图在 Windows 单机本盘上写 NORMAL。diskGroup.disks这个键在 Windows 上通常留空,让安装器用默认发现串去扫盘,如果强制填盘符反而不稳定——asmtool 打标记后的盘在设备管理器里的路径可能变化。
4.2 执行静默安装的命令与日志定位
rsp 文件准备好后,在管理员 cmd 里进入解压目录执行:
:: 管理员 CMD,进入 zip 解压根目录 setup.exe -silent -responseFile C:\home\grid_install_w64.rsp -ignorePrereqFailure :: 查看退出码 echo %ERRORLEVEL%-silent和-responseFile必须成对出现,只要有一个缺失,安装器就会尝试拉起图形界面。-ignorePrereqFailure是跳过 CBD 预检查失败继续安装,这里要说明白:跳过预检查不代表问题消失,只是把问题推迟到 root 脚本阶段。如果后面配置脚本报错,回到第 2 章把系统准备项补齐再跑远比硬着头皮继续省事。
静默安装的日志和图形安装不在同一个位置,一般在%TEMP%\OraInstall<时间戳>和C:\Program Files\Oracle\Inventory\Logs下。判断成功与否不要看 cmd 窗口有没有报错,而是去 installActions 日志尾部找“Successfully validated and installed”字样,或者确认%ERRORLEVEL%为 0。失败时先看oraInstall.err的最后 20 行,只有 SEVERE 和 ERROR 级别需要处理,INFO 级别全是过程记录,别被大段 INFO 干扰。
4.3 静默装完后的三个服务状态检查
静默安装执行完,不等于 GI 已经可用。先检查 Windows 服务是否正常注册并启动:
sc query OracleCRSService sc query OracleASMService+ASM sc query OracleClusterVolumeService输出里关键是 STATE 列:应为 RUNNING,START_TYPE 为 AUTO_START。如果 OracleCRSService 是自动但 OracleASMService+ASM 显示手动,说明 gridconfig.bat 没有执行到位,或者执行时权限不足。这时不要手动sc create去仿建服务,GI 的 Windows 服务名、依赖关系和启动参数是由配置脚本写进注册表的,手工注册的“山寨服务”没有对应资源依赖,重启后必翻车。正确做法是删除掉手工注册的服务,重新跑一次配置脚本收尾。
这里还容易忽略 OracleClusterVolumeService。这个服务负责管理 ASM 磁盘的卷设备依赖,它如果没起来,后面 ASM 实例可能启动成功但磁盘组一直扫不到盘。看到它不是 RUNNING 时,先看它的依赖服务,而不是直接重启 ASM。
5. 避坑清单:Windows 上把 11gR2 GI 装到生产前的 5 条血泪记录
5.1 解压路径带中文,setup.exe 一半闪退
现象:双击 setup.exe 没反应,或者从 cmd 启动后在 5% 左右中断,日志里报“无法加载 OUI 组件”。
原因:OUI 对非 ASCII 路径支持很差。解压路径如果包含中文用户名(比如C:\Users\张三\Downloads\win64_11gR2_grid),安装器在读 stage 相对路径时解析失败。zip 本身是英文包,问题全出在目标路径。
解决:把整个解压目录移到纯英文路径,比如C:\grid_install,重新双击。如果之前已经执行到一半,先把 stage 目录删干净再解压,不要覆盖式解压——残留的临时文件会让新安装读到脏配置。
5.2 asmtool 标记后 OUI 仍说找不到候选磁盘
现象:磁盘组配置页的候选磁盘列表为空,asmtool -list 也看不到预期盘。
原因:盘上还有残留的文件系统或者 Windows 的隐藏分区。虚拟机磁盘经常在创建时被系统盘初始化工具写入了 GPT 或 MBR 分区表,ASM 读盘头发现不是裸盘,直接过滤掉。
解决:用 diskpart 清理磁盘再打标记。管理员 cmd 里diskpart,然后list disk、select disk 1、clean all,这一步会彻底抹掉盘上的分区表和所有数据,确认盘里没东西再执行。清完后回到 asmtool-add重新打标记。如果是 VMware 虚拟盘,还要确认虚拟磁盘的“独立-持久”模式已开启,否则快照回滚会把 ASM 盘头一起回滚,造成磁盘组不可用。
5.3 ASM 实例起来了,磁盘组却迟迟 MOUNT 不上
现象:asmcmd lsdg 显示 DATA 组状态是 MOUNTING 或 OFFLINE,alert_+ASM.log 里报 ORA-15032 “not all alterations performed”。
原因:ASM_DISKSTRING 参数没有覆盖已打标记的盘路径。Windows 上 ASM 扫描磁盘的路径和 Linux 不一样,asmtool 标记后的盘路径形如\\?\GLOBALROOT\Device\HarddiskX\PartitionY,如果 ASM_DISKSTRING 还停留在默认值,实例启动时扫不到已经存在磁盘组里的盘。
解决:先asmcmd lsdsk看实例能发现哪些盘,再alter system set asm_diskstring='\\?\GLOBALROOT\Device\Harddisk*' scope=both;把发现串放宽,然后alter diskgroup DATA mount;。如果盘是磁盘组的一部分但实例发现不了,问题在发现串;如果盘根本不在列表里,回到 5.2 检查 asmtool 标记。
5.4 重启服务器,ASM 没自动拉起
现象:Windows 重启后,OracleASMService+ASM 停在“已停止”,手动启动时报“服务依赖的服务不存在或已被标记删除”。
原因:GI 三个核心服务的启动依赖没有被正确写入注册表。常见诱因是安装配置脚本执行时杀毒软件拦截了服务注册,或者运维人员在服务管理器里手工调整过依赖关系。
解决:打开服务管理器,确认 OracleCRSService、OracleASMService+ASM、OracleClusterVolumeService 三个服务启动类型都是自动。再用srvctl enable asm把 ASM 资源设为随集群自启。做完后建议做一次干净的重启验证:先crsctl stop crs,再正常重启 Windows,开机后看crsctl stat res -t里 ora.asm 是否 ONLINE。这一步在部署到生产前至少要完整演练一遍,不要赌它第二次能自己好。
5.5 杀毒软件把 oraAgent.exe 当成勒索病毒删掉
现象:安装完成后 OracleOHService 服务无法启动,Windows 事件日志里有“文件已被防病毒软件隔离”的记录。
原因:oraAgent.exe 会遍历磁盘、写 ASM 盘头、探测网络端口,这些行为和勒索软件的前期动作高度重合。Windows Defender 或者企业的 EDR 在实时防护模式下很容易误报。
解决:安装窗口期内把C:\app、C:\Program Files\Oracle、zip 解压目录加进杀毒软件白名单,安装完成后再收窄白名单范围,不要长期放行整个目录。企业环境有安全合规要求的话,先走变更审批再关实时防护,装完后第一时间恢复防护策略。这不算 Oracle 的 bug,是安全软件和数据库软件的正常误杀事件,保留好安装日志备查。
6. 装完先跑这三条验证,再考虑建库
GI 装完,ASM 实例也起来了,别急着拿 DBCA 建库。先把下面三条命令跑一遍,确认集群件和磁盘组真正健康:
crsctl check crs asmcmd lsdg srvctl status asm -vcrsctl check crs的输出里,CSS、CRS、EVMD、ora.asm 四项都应该显示 ONLINE。只要有一项不是,说明集群件依赖没起来,后两项检查没必要继续。asmcmd lsdg看磁盘组状态:STATE 列是 MOUNTED,FREE_MB 还有余地;如果显示 DISMOUNTED 或 MOUNTING,说明 ASM 实例和磁盘组的对接有问题,去查 alert_+ASM.log。srvctl status asm -v确认 ASM 实例的进程号和运行状态,输出里能看到实例名 +ASM 在哪个主机上运行,以及它的启动方式是 normal 还是 failed。
这三条命令跑通之后,建库阶段 DBCA 里才看得到 ASM 磁盘组。有一点验证方法是日常值得保留的:给%ORACLE_BASE%\diag\asm\+ASM\trace\alert_+ASM.log加一个文件大小监控,每次超过 200MB 就检查告警里有没有大量 ORA-15032 或者磁盘离线记录。
我自己的习惯是每次重启 Windows 主机前,先执行crsctl stop crs -f正常停掉 GI,再关机,绝不直接点重启或者断电源。以前吃过一次亏:机房电闸跳动,机器直接断电重启,起来后 DATA 组三个盘里有两个显示“过时”,整整花了一个下午用 failgroup 手工恢复。ASM 盘头的写入不是同步的,Windows 上异常断电的损坏概率比 Linux 还高,这个步骤能省就省不得。
另外,磁盘组的空间不要等到快满了才扩。External 冗余下加盘容易,alter diskgroup DATA add disk一行命令搞定,但从 External 改成 Normal 冗余几乎等于重做磁盘组,事前规划比事后补救重要得多。希望帮到你。
本文还有配套的精品资源,点击获取