拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Oracle 11gR2 Grid Infrastructure在Windows x64上的安装实战与排错

Oracle 11gR2 Grid Infrastructure在Windows x64上的安装实战与排错 简介win64_11gR2_grid.zip 是 Oracle 11g R2 Grid Infrastructure 在 Windows 64 位平台下的官方安装介质压缩包面向需要部署 Oracle Clusterware 与 ASM 的 DBA、系统运维人员以及 Oracle 集群技术学习者尤其适合离线环境下完成集群搭建、存储配置与高可用验证。压缩包约 682MB内含 1495 个文件其中 jar 文件多达 1047 个用于封装各类组件与库191 个 htm 和 7 个 pdf 构成操作与概念文档67 个 dll 提供运行依赖12 个 exe 为安装配置向导4 个 bat 可辅助脚本化执行14 个 xml 和 9 个 properties 存放参数配置整体目录结构清晰。包内还附带 oracle.crs 相关备份文件、cvu_config 校验文件与 rsp 响应文件可用于环境预检、自动化安装及 Grid 服务启动后的集群状态检查解压后可按目录区分 Clusterware、ASM 与网络监听组件便于对照结构进行部署与排错。资源已有 373 人学习适合希望深入掌握 Windows 64 位下 Oracle 11g R2 集群安装细节的中高级数据库工程师。对需要系统学习 Oracle 集群基础架构的读者亦有参考价值。1. win64_11gR2_grid.zip 到底在解决什么问题这个文件名能直接拆成三块信息win64说明是 Windows x64 平台11gR2说明是 Oracle 11.2.0.x 系列grid则代表 Oracle Grid Infrastructure也就是常说的 Oracle 集群件和 ASM 的地基包。它不是数据库安装包而是给 RAC、多节点 RAC 甚至单机 ASM 场景打地基的安装介质。你要解决的不是“数据库怎么装”而是“OCR/Voting Disk 谁来管、ASM 实例谁拉起来、两个节点之间谁说了算”这些更靠前的问题。适合正在 Windows Server 上搭 11gR2 RAC 的 DBA也适合想在虚拟机上复现一套 ASM 环境的人。2. 先认清 Grid Infrastructurezip 里的东西不是数据库而是 RAC/ASM 的地基2.1 Grid Infrastructure Clusterware ASM 一套管理服务很多人在检索win64_11gR2_grid.zip时第一反应是把它当成数据库安装包下载回来结果解压后启动setup.exe看到的界面不是“安装数据库”而是“安装和配置 Oracle Grid Infrastructure for a Cluster”。这个区分很重要11gR2 开始Oracle 把 CRS 和 ASM 合并成一个独立安装单元叫 Grid Infrastructure安装在单独的 Grid Home 里。这个 zip 解压后一般会看到setup.exe、response、install、stage这类顶层目录。它是给整个 Oracle 集群做地基的包含三层第一层是 Clusterware负责节点成员管理、心跳、fencing 和资源调度第二层是 ASM负责把共享盘抽象成数据库可用的磁盘组第三层是crsctl、srvctl、asmcmd等管理命令和高可用 agent。这一层不稳定后面装 RAC 数据库一定会被拖下水。2.2 11gR2 的 Grid 和 10g 的 CRS 有什么区别OCR/Voting 与 Restart10g 时代CRS 是单独的集群件ASM 是跟着数据库 Home 一起装的11gR2 之后Oracle 把 CRS ASM 做成组合单独装在 Grid Home。最直接的好处是数据库 Home 和 Grid Home 分开升级 Grid 时不用动数据库日常维护能少踩很多雷。在 11gR2 中OCR 和 Voting Disk 也可以放进 ASM 磁盘组。对 Windows 来说这是个大解脱Windows 上的裸盘管理本来就麻烦如果 OCR/Voting 仍像 10g 那样依赖裸设备光仲裁盘的盘符稳定性就能让维护崩溃。把 OCR/Voting 放进 ASM 后你只需要关注共享盘本身是否稳定磁盘组大小也不用在一开始就切得很碎。还有一个容易忽略的安装选项如果只有一台 Windows 服务器只需要 ASM或者想让 listener 在整机级别被管理可以不选 RAC 集群直接装 Oracle Restart。这个模式没有节点间心跳也没有 Voting Disk但仍然由 Grid 负责启动 ASM、listener 和磁盘组非常适合做一些备份恢复和单机自动化场景。2.3 拿到 zip 之后先核对环境和文件完整性文件名带zip第一步一定是校验不是急着点开。官方下载页上通常会提供校验值先用 PowerShell 或certutil确认文件没有在下载过程中损坏能省掉后面一堆“安装到 80% 报错”的麻烦。Get-FileHash .\win64_11gR2_grid.zip -Algorithm SHA256 certutil -hashfile .\win64_11gR2_grid.zip SHA256然后建议用 7-Zip 或 Windows 自带解压把整包解压到一个纯路径目录千万不要解压到C:\Program Files。Oracle 11g 时代的安装器对空格和中文路径很敏感装到一半起不来是常事。我一般这样解压7z x win64_11gR2_grid.zip -oD:\stage\grid -y-oD:\stage\grid指定输出目录-y表示遇到覆盖提示直接确认。之所以选 D 盘顶层路径是为了避免Program Files的权限重定向。解压后先进入response目录看一眼grid.rsp是否存在它是后面做静默安装的底稿没有response目录的版本至少也要能找到setup.exe和readme文件否则说明 zip 没解完整。3. 在 Windows x64 上预装账号、系统服务、共享盘这些不准备好后面全是玄学3.1 账号与权限一个能「以服务方式登录」的专用用户Windows 上装 Grid 的第一个坑是账号。不要用 administrator 登录后一路 next 到底也不要随意用域管理员账户当 Oracle 服务账号。常见做法是先建一个本地账号例如grid加入Administrators组然后在本地安全策略里把下面这些用户权利显式赋给grid以服务方式登录Log on as a service调整进程的内存配额Adjust memory quotas for a process替换进程级令牌Replace a process level token锁定内存中的页面Lock pages in memory绕过遍历检查操作路径是secpol.msc- 本地策略 - 用户权利分配按上面名字逐个添加。很多 Windows 上 Grid 服务启动失败不是密码错了而是Log on as a service没勾上。同时把账号密码设为永不过期。Oracle 服务在重启后要自动拉起来如果密码策略 90 天过期过期那天集群资源会以最难看的姿态全部 offline。这个决定不要在交付后让人随意改掉否则后面几周就要反复处理密码过期导致的Cluster Ready Services起不来问题。3.2 系统级调整防火墙、注册表、时间同步RAC 至少需要两套网卡公网网卡让客户端访问节点私网网卡专门跑心跳。公共网络和私有网络的网卡都不能设成 DHCP因为重启后私有 IP 一旦变化节点仲裁立刻乱掉。hosts文件里的名字解析要写全即使有 DNS。Windows 的 DNS 解析往往有延迟系统服务起来时可能 DNS 还没就绪Oracle 就会把节点判成失联。我一般会在每台节点的C:\Windows\System32\drivers\etc\hosts里写两行10.10.10.11 rac1 10.10.10.12 rac2 192.168.100.11 rac1-priv 192.168.100.12 rac2-priv然后禁掉私网网卡的电源节能功能。Windows Server 默认可能允许网卡在低负载时进入节能状态这在办公网络里没问题但在集群心跳场景是灾难两个节点互相以为对方死了然后触发 fencing。做法是网卡属性 - 电源管理 - 取消勾选“允许计算机关闭此设备以节约电源”。时间同步同样不能省。Windows Time 服务默认未配置外部时间源两个节点时钟只要差 1 秒左右安装检查的time offset就会 fail。安装前先用w32tm /resync对一下如果还不过再配置同步源。对 11gR2 来说容错窗口非常小虚拟机环境尤其要关注宿主机时间漂移。3.3 共享盘准备ASM 要空盘不要格式化成 NTFS这一步是最容易被 Windows 管理员误解的。ASM 磁盘组需要的不是“共享文件夹”也不是“格式化好的 NTFS 盘”而是能由多个节点同时写入的原始卷。常见做法是在 VMware 里加两块共享 VMDK生产 SAN 就是多个节点都能访问的 LUN这些盘在每台节点上都能看到但初始化只用其中一台做。在 Windows 磁盘管理里建立分区时建议用 MBR建立一个主分区但不要格式化。ASM 要的是一个没有文件系统的卷NTFS 的元数据会干扰 Oracle 对候选磁盘的识别。如果共享盘已经被 Windows 自动挂成了 NTFS先用diskpart清掉diskpart list disk select disk 2 clean convert mbr create partition primaryselect disk 2里的盘号以list disk为准别选到系统盘。clean会清掉整块盘的数据操作前先确认disk 2就是要给 ASM 的那块。清理完不要 format直接让 ASM 去认盘。3.4 用 runcluvfy.bat 做安装前体检Oracle 11gR2 自带的 Cluster Verification Utility 在 Windows 上是runcluvfy.bat。装之前跑一遍基础环境检查比等到 OUI 跑到最后一步报错再回头排查效率高得多。命令里的-n后面写两个节点名-r 11gR2让 CVU 按 11gR2 的规则检查。cd /d D:\stage\grid D:\stage\grid\runcluvfy.bat stage -pre crsinst -n rac1,rac2 -r 11gR2 -verbose这个命令会检查操作系统版本、内存、交换分区、临时目录、网络接口、系统权限、时间同步。它在 Windows 上特别爱报的两类问题就是网卡性能和用户权限。-verbose必须加它会把细节打印出来如果只给节点名不打印详细结果你根本不知道是哪一项不满足。检查不过不用硬装。常见情况是防火墙开着导致 CVU 探测不了远端节点或者grid账户缺少Log on as a service。先把前面的权限和网络问题解决再重跑一遍确保输出里所有 Check 至少是 Passed或者 Warning 可以忽略而不是大量 Failed。4. 正式安装从解压到 root.bat一步一步可抄作业4.1 解压与静默响应文件的创建第 2 章已经解压过了这里只说正式安装前要做完的两件事环境变量和响应文件。安装 Grid 的账号建议单独设一个用户级环境变量ORACLE_BASE不要把它指向数据库 Home。常见做法是ORACLE_BASED:\app\grid ORACLE_HOMED:\app\11.2.0\grid这两个变量给grid用户设用户级环境变量即可系统级变量容易被其他服务读到。响应文件可以从response\grid.rsp模板改出来最稳妥的办法不是手写而是先在有桌面的节点上把图形安装跑到最后一步保存一份 response 文件当底稿后面再用-silent -responseFile复现。4.2 setup.exe 图形安装走一通的要点我建议第一次先用图形界面走一遍哪怕后面要静默也至少知道每个步骤在问什么。启动命令很简单cd /d D:\stage\grid setup.exe进入安装向导后记下几个关键选择。第一屏选“Install and Configure Oracle Grid Infrastructure for a Cluster”如果只玩单机 ASM就选 Oracle Restart。集群节点列表填 rac1、rac2私有网卡一定要出现在互连列表中且互连 IP 对应的是rac1-priv那一路。后面会要求指定 OCR 和 Voting Disk 的存储。如果前面已经准备了共享盘就在这里先创建 ASM 磁盘组如果没有也可以在这里创建。推荐先建一个DATA磁盘组Redundancy选External把共享盘加进去。11gR2 环境下 ASM 的候选盘路径以asmca显示的为准不要凭记忆手打盘符Windows 的盘符和设备对象路径很容易记错。图形安装不是一直盯屏就结束了真正重要的是最后几步。OUI 会生成配置脚本并提示用管理员身份执行。Windows 上对应的是root.bat具体路径在 OUI 最后弹窗里显示各节点都要执行第一个节点执行时其他节点要等待不要同时在多个节点上抢脚本。4.3 用 root 权限执行配置脚本Windows 上没有root.sh对应脚本是root.bat部分小版本可能是root.cmd以 OUI 弹窗提示为准。打开一个“以管理员身份运行”的 CMD切到脚本目录执行cd /d D:\app\11.2.0\grid\crs\install start /wait cmd /c root.bat D:\app\grid\root.log 21start /wait是让 CMD 不要立刻把窗口关掉 root.log 21是把脚本输出和错误都写到日志里方便后面排错。如果不加日志重定向窗口闪一下你想看历史都看不到。root.bat做的事情很集中创建 Oracle Inventory、注册集群服务、配置 OCR/Voting Disk、启动集群栈。它跑完以后集群才算真正被安装到了系统服务层。如果日志最后没有successfully configured之类的字样要先去看%ORACLE_BASE%\diag\crs\节点名\crs\trace\alertcrs.log不要一直重跑脚本。4.4 建 ASM 磁盘组给数据库准备可用空间如果安装时已经创建了 DATA 磁盘组这一节可以跳过。没有的话等集群起来后先用 ASMCA 检查候选盘D:\app\11.2.0\grid\bin\asmca.bat如果喜欢命令行可以用 SQL*Plus 连接 ASM 实例创建sqlplus / as sysasm CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK asmdisk1, asmdisk2 NAME DATA;asmdisk1不是你写死的盘符而是先执行下面命令确认到的路径D:\app\11.2.0\grid\bin\asmcmd lsdskASM 实例连上以后asmcmd lsdsk会列出它能看到的候选盘。Windows 上常见路径形式是\\.\G:或\\?\PhysicalDriveN每个节点看到的路径要保持一致否则磁盘组挂在另一个节点上时会找不到盘。创建完可以验证SELECT GROUP_NUMBER, NAME, STATE, TOTAL_MB, FREE_MB FROM V$ASM_DISKGROUP;看到STATE MOUNTED这个磁盘组才能被后续的数据库 Home 使用。DATA 盘组用EXTERNAL表示不启用 ASM 镜像生产环境要按硬件冗余条件改成NORMAL代价是磁盘组容量要减半但换回来的是抗单盘故障能力。5. Windows 上装 11gR2 Grid 的 5 条避坑记录现象、原因、解决5.1 集群服务全 offlinealertcrs.log 里反复报 OCR 路径不对现象安装完成后重启节点crsctl stat res -t里Cluster Ready Services和ora.asm全部 offline手动crsctl start cluster -all也拉不起来。原因很常见的是 OCR/Voting 所在的 Windows 盘符在重启后变了。Windows 磁盘管理在系统启动阶段对卷的挂载顺序不稳定盘符从 G: 变成 I:ASM 启动时按旧路径找磁盘自然找不到 OCR。另一种原因是OracleHighAvailabilityService的登录账号密码过期或失去Log on as a service权限。解决先用diskmgmt.msc把所有共享盘盘符固定尽量用靠后的字母连续重启验证两次盘符不变。然后检查服务登录账号sc qc OracleHighAvailabilityService如果账号或启动类型不对改成LocalSystem扫除依赖再用grid账号重新配置。最后手动拉起集群crsctl start cluster -all不要反复执行root.bat那只是在卡住的地方再来一次问题不在脚本本身。5.2 ASM 候选磁盘全空磁盘组始终建不出来现象ASMCA 界面打开后Candidate 磁盘列表是空的明明磁盘管理里能看到共享盘。用 SQL 创建磁盘组时直接报ORA-15032: disk location mismatch或ORA-15078: ASM disk I/O failure。原因共享盘被格式化成 NTFS或者 Windows 把物理盘识别成了动态磁盘。ASM 不认动态磁盘也不认带文件系统的卷。很多 Windows 管理员习惯用“新建简单卷并格式化”完成磁盘准备这一步就把 ASM 堵死了。解决把这块盘退回到原始状态不格式化diskpart list disk select disk 2 online disk clean convert mbr create partition primaryonline disk是确认 Windows 没把它标成 offline。之后不要切“格式化为 NTFS”直接关掉磁盘管理回 ASMCA 刷新。如果还是空的重启一次让 Windows 重新枚举磁盘再试asmcmd lsdsk。5.3 节点间心跳超时集群反复把节点 fence 掉现象RAC 装完跑几天某天凌晨一台节点资源全部 offlinealertcrs.log里看到Incorrect heartbeat...节点被 reboot 或 evicted。原因Windows 网卡节能和防火墙是重灾区。私网网卡在低流量时进入节能模式心跳报文延迟超过阈值另一个节点判定它没活着直接触发 fencing。解决先验证私网连通性ping rac1-priv -t ping rac2-priv -t如果可以通再把两块私有网卡的电源管理节能关掉并给防火墙加一条例外netsh advfirewall firewall add rule namerac_priv dirin actionallow remoteip192.168.100.0/24 profileany enableyesremoteip要改成你实际的私网网段。如果 ping 不同问题更多出在 hosts 解析而不是防火墙。改完 hosts 后用ipconfig /flushdns刷新再crsctl start cluster -all拉起来。5.4 setup.exe 双击闪退或者弹出一个空白小窗口现象解压完进入目录正常双击setup.exe屏幕一闪或者是一个无法点击的空白小窗安装界面起不来。原因最常见的是解压路径有空格或中文。11g 的 OUI 在 Windows Server 2019 以上高 DPI 环境下也很容易窗口异常。另一个常见点是环境变量JAVA_HOME被设置成了系统里的其他 JDKOUI 的启动脚本优先读这个变量版本不匹配就直接退回。解决先清掉JAVA_HOME再启动set JAVA_HOME setup.exe如果还是闪退把整个解压目录复制到D:\stage\grid这种纯英文路径并暂时把 Windows Defender 实时扫描排除掉这个目录。11g 的安装包有一堆白名单没签署好的执行文件杀毒软件误删会导致启动脚本少件最直观就是窗口起不来。5.5 root.bat 跑完但资源不自动启动重启后要手动拉起现象root.bat最后没报错集群手动能 start但重启操作系统后ora.cluster资源不自启动每次都要登录手动crsctl start cluster。原因Grid 服务没有设置成 Automatic或者服务登录账号对系统状态感知不够。Windows 服务重启时按依赖顺序拉起如果 CSS 服务启动慢前面的服务抢先退出整个集群栈就停在地面。解决检查服务启动类型sc qc OracleHighAvailabilityService sc qc OracleASMServiceASM如果输出显示START_TYPE : DEMAND_START改成自动sc config OracleHighAvailabilityService start auto sc config OracleASMServiceASM start auto改完以后重启一次看crsctl check cluster -all是否自动 online。注意start auto的等号后面必须有空格否则 sc 命令不生效。6. 把每次动 Grid 前的检查固化成一条命令状态、ASM、日志一次看全运维 Oracle Grid 最怕的不是不会装而是每次改动前不看集群状态改完后再一脸懵地看日志。我习惯把下面这套检查动作写成一个 bat放到D:\admin每次只跑一遍echo off set GRID_HOMED:\app\11.2.0\grid set PATH%GRID_HOME%\bin;%PATH% echo CLUSTER STATE crsctl check cluster -all echo RESOURCE STATUS crsctl stat res -t echo ASM DISK GROUPS asmcmd -p lsdg echo DATABASE SERVICE srvctl status database -d ORCLcrsctl check cluster -all看两个节点的 CSS 是否互通crsctl stat res -t看资源的目标值和当前值是否一致例如ora.asm的 target 是 ONLINEstate 也必须是 ONLINEasmcmd lsdg看磁盘组的 MOUNTED 状态和 free 空间srvctl status database看 RAC 数据库在几号节点运行。如果srvctl status报网段错误再去%ORACLE_BASE%\diag\crs\rac1\crs\trace\alertcrs.log看尾部几十行就行。我自己的习惯是任何一次 Grid 操作前先跑一遍这个 bat再看 alertcrs.log 尾部。这个习惯救过我一次当时srvctl status asm显示 ASM 实例在线但crsctl stat res -t里ora.asm的 target 是 offline说明 ASM 是被人手动起的不是被集群管理的。看到这个状态再动手就不会误判。希望帮到你。本文还有配套的精品资源点击获取
返回列表