ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Windows下Oracle 11g R2 RAC安装:Grid Infrastructure与ASM配置实战

Windows下Oracle 11g R2 RAC安装:Grid Infrastructure与ASM配置实战 简介本资源为Oracle 11g R2 Grid Infrastructure在Windows 64位环境下的安装包面向需要搭建Oracle集群的数据库管理员与运维工程师帮助解决集群部署与ASM存储配置问题。压缩包共1495个文件约682.04MB以1047个jar、191个htm、88个gif、67个dll及12个exe为主涵盖安装向导、集群验证工具、文档页面与依赖组件另有rsp响应文件、bat批处理脚本及cvu_config等配置项便于自动化部署与集群校验。已有374人学习下载。资源完整保留Grid Infrastructure安装介质结构可用于创建和配置新集群、部署OCR与Voting Disks、配置ASM磁盘组并借助runcluvfy等工具完成集群验证适合需要深入理解Oracle Clusterware与ASM机制的中高级技术人员参考实践。1. 从 win64_11gR2_grid.zip 解压后那几个 .bak 说起如果你手头正好有一台 Windows Server 2008 R2 或 2012 的 64 位机器又必须把 Oracle 11g R2 的 RAC 搭起来那你大概率绕不开win64_11gR2_grid.zip这个包。它不是一个普通的安装器而是 Oracle Grid Infrastructure 在 Windows 平台上的完整介质里面既有setup.exe的图形化入口也有runcluvfy.bat、exectask.bat、access_setup.bat、addLangs.bat这些批处理脚本还有oracle.crs.11_2_0_1_0_*.bak这类 OCR 备份文件以及blafdoc.css、bp_layout.css、doccd.css、darbbook.css这些文档样式表。很多人第一次解压看到一堆.bak和.css会懵——这到底是安装包还是文档包其实它是两者混在一起的.bak是 Clusterware 在安装或升级过程中自动生成的 OCR 备份.css是联机文档的样式文件真正干活的是setup.exe和那几个.bat。这个资源解决的核心问题就一个在 Windows 64 位环境下把 Oracle Clusterware 和 ASM 装起来让多个节点共享同一个数据库实例。适合谁适合那些被要求“必须用 Windows 跑 Oracle RAC”的 DBA或者想在自己实验室里复现一套高可用集群的工程师。如果你只是单机装个 Oracle 玩这个包对你来说太重了别折腾。2. 先搞懂 Grid Infrastructure 在 Windows 上的两件套Clusterware 与 ASM2.1 Clusterware 负责“谁活着”ASM 负责“数据放哪”Oracle 11g R2 的 Grid Infrastructure 在 Windows 上拆成两个核心组件。Oracle Clusterware 是集群的神经中枢它管的是节点成员关系、资源状态、VIP 漂移、OCR 和 Voting Disk 的读写。你运行crs_stat -t看到的那些ora.xxx资源全是 Clusterware 在维护。ASM 则是存储层它把裸磁盘或者共享卷做成磁盘组再在磁盘组上划出 OCR、Voting Disk 和数据库文件。Windows 环境下 ASM 的坑比 Linux 多因为 Windows 没有udev磁盘权限和盘符管理得靠 ASM 自己的过滤规则。常见做法是先给共享磁盘分配盘符然后在 ASM 实例里用ASM_DISKSTRING参数指定扫描路径比如\\.\ORCLDISK*。如果你用 VMware 或 Hyper-V 做实验共享磁盘必须设成“独立-持久”模式否则两个节点同时写会直接把 Voting Disk 搞坏。我一般会先跑一遍runcluvfy.bat把节点连通性、共享磁盘可见性、用户权限全查一遍再动setup.exe。这个脚本在解压目录的install\下别漏了。2.2 安装前必须锁死的四个参数在 Windows 上装 Grid Infrastructure有四个参数如果一开始没定好后面基本要重装。第一个是集群名称和 SCAN 名称SCAN 在 11g R2 里默认走 DNS 或者 hosts 文件解析三个 IP 必须提前在 DNS 里注册好或者至少在每个节点的hosts里写死。第二个是 OCR 和 Voting Disk 的冗余方式Windows 上推荐用 ASM 的NORMAL冗余至少三块盘别用EXTERNAL除非你的存储本身有 RAID。第三个是 ASM 磁盘组的分配单元大小默认 1MB 对大多数场景够用但如果你要放大量小文件改成 4MB 会减少元数据开销。第四个是crs和asm两个服务的启动账户必须用同一个域用户或者本地用户且该用户要有“作为服务登录”的权限。我见过有人用 Administrator 装完结果crs起不来就是因为 Administrator 默认没有“作为服务登录”的权限得在secpol.msc里手动加。这些参数在响应文件里对应oracle.install.crs.config.*和oracle.install.asm.*前缀后面会细说。3. 从解压到 runcluvfyWindows 下的预检查与响应文件配置3.1 解压后先别急着点 setup.exe把win64_11gR2_grid.zip解压到一个短路径下比如C:\grid\路径里不要有空格和中文。解压完你会看到setup.exe、runcluvfy.bat、exectask.bat、access_setup.bat、addLangs.bat还有doc\目录下的blafdoc.css、bp_layout.css、doccd.css、darbbook.css。那些.bak文件是 OCR 自动备份安装前不用管装完以后它们会出现在%ORACLE_HOME%\cdata\下面。先以管理员身份打开命令行切到解压目录跑一遍runcluvfy.bat stage -pre crsinst -n node1,node2 -verbose这个命令会检查节点间的网络连通性、共享磁盘可见性、用户等价性、系统时钟同步。-n后面跟节点名-verbose输出详细结果。如果报“PRVF-xxxx”错误先解决再往下走。常见的是防火墙没关、hosts文件不一致、或者共享磁盘在一个节点上可见另一个节点不可见。我一般会把runcluvfy的输出重定向到文件方便对比两次检查的差异。3.2 用响应文件把安装参数一次写死图形化安装容易点错而且 Windows 上远程桌面跑setup.exe有时候会卡在“正在启动 Oracle Universal Installer”。更稳的做法是写一个响应文件用静默模式装。在解压目录的response\下有个grid_install.rsp模板复制一份改。关键参数如下# 集群配置 oracle.install.crs.config.clusterNamemycluster oracle.install.crs.config.scanNamemycluster-scan oracle.install.crs.config.gpnp.scanNamemycluster-scan oracle.install.crs.config.gpnp.scanPort1521 oracle.install.crs.config.nodesnode1:node1-vip,node2:node2-vip oracle.install.crs.config.networkInterfaceListeth0:192.168.1.0:1,eth1:10.0.0.0:5 # ASM 配置 oracle.install.asm.diskGroup.nameDATA oracle.install.asm.diskGroup.redundancyNORMAL oracle.install.asm.diskGroup.disks\\.\ORCLDISK1,\\.\ORCLDISK2,\\.\ORCLDISK3 oracle.install.asm.diskGroup.quorumFailureGroupQUORUM oracle.install.asm.diskGroup.dataFailureGroupDATA # OCR 和 Voting Disk oracle.install.crs.config.useASMForOCRtrue oracle.install.crs.config.ocrDisksDATA oracle.install.crs.config.votingDisksDATAnetworkInterfaceList的格式是接口名:子网:类型类型 1 是公共网络5 是私有网络。diskGroup.disks在 Windows 上必须用\\.\ORCLDISK*这种设备路径不能写盘符。quorumFailureGroup和dataFailureGroup用来做冗余隔离如果你只有三块盘全放一个 failure group 也行但生产环境建议分开。改完响应文件后用setup.exe -silent -responseFile C:\grid\response\grid_install.rsp -waitforcompletion-waitforcompletion让安装进程在前台跑完方便看日志。日志在%ORACLE_HOME%\cfgtoollogs\下出错了先翻installActions*.log。4. 配置 OCR、Voting Disk 与 ASM 磁盘组的实操细节4.1 OCR 和 Voting Disk 到底放在哪OCR 存的是集群的配置信息比如资源依赖关系、VIP 地址、数据库实例注册信息。Voting Disk 存的是节点心跳和仲裁信息。在 11g R2 里这两样都可以放在 ASM 磁盘组里前提是你先建一个 ASM 磁盘组。安装程序在setup.exe阶段会引导你创建第一个磁盘组通常叫DATA或者CRS。如果你用响应文件oracle.install.crs.config.useASMForOCRtrue就会把 OCR 和 Voting Disk 都放进你指定的磁盘组。注意OCR 需要至少 1GB 空间Voting Disk 需要至少 1GB所以你的第一个磁盘组别只给 2GB留点余量。Windows 上 ASM 磁盘的发现依赖ASM_DISKSTRING默认是\\.\ORCLDISK*如果你用 iSCSI 或者 FC 盘盘符可能不带ORCLDISK前缀那就得手动改ASM_DISKSTRING为\\.\PhysicalDrive*或者具体路径。改完要重启 ASM 实例才生效。4.2 建 ASM 磁盘组时那几个参数怎么填在 ASM 实例里建磁盘组语法是CREATE DISKGROUP DATA NORMAL REDUNDANCY FAILGROUP DATA1 DISK \\.\ORCLDISK1 NAME DATA1_0000 FAILGROUP DATA2 DISK \\.\ORCLDISK2 NAME DATA2_0000 FAILGROUP DATA3 DISK \\.\ORCLDISK3 NAME DATA3_0000 ATTRIBUTE au_size4M, compatible.asm11.2.0.0.0, compatible.rdbms11.2.0.0.0;NORMAL REDUNDANCY表示双副本至少需要两块盘但推荐三块做仲裁。FAILGROUP是故障组同一故障组里的盘会同时失效所以要把不同存储控制器上的盘分到不同故障组。au_size是分配单元大小4M 适合数据仓库场景1M 适合 OLTP。compatible.asm和compatible.rdbms在 11.2.0.1 里必须写11.2.0.0.0写高了会报错。建完磁盘组后用SELECT name, state, total_mb, free_mb FROM v$asm_diskgroup;确认状态是MOUNTED。如果状态是DISMOUNTED去%ORACLE_HOME%\log\下看 ASM 的 alert 日志多半是磁盘权限问题——Windows 上 ASM 服务账户必须对物理磁盘有读写权限用diskpart的attributes disk clear readonly可以去掉只读属性。5. 避坑Windows 上装 Grid 最容易翻车的五个地方5.1 现象runcluvfy 报“PRVF-5436: 无法访问节点”原因节点间的hosts文件解析不一致或者防火墙拦了135、445、1521端口。Windows 防火墙默认会拦exectask.bat和runcluvfy.bat的远程调用。解决在每个节点的hosts里把node1、node1-vip、node2、node2-vip、mycluster-scan全部写死然后临时关掉防火墙或者用netsh advfirewall firewall add rule放行135、445、1521和49152-65535动态端口。装完再按需收紧。5.2 现象ASM 磁盘组创建失败报“ORA-15018: diskgroup cannot be created”原因ASM_DISKSTRING没匹配到磁盘或者磁盘被 Windows 挂载成了只读。Windows 的mountvol有时候会把共享盘挂成只读ASM 写不进去。解决先用asmtoolgOracle 自带的 ASM 磁盘工具把磁盘标记为ORCLDISK然后在 ASM 实例里ALTER SYSTEM SET asm_diskstring\\.\ORCLDISK* SCOPESPFILE;重启 ASM。如果还不行用diskpart的list disk和select disk确认磁盘没有readonly属性。5.3 现象crs_stat -t 显示资源是 INTERMEDIATE 或者 OFFLINE原因OCR 备份文件损坏或者 Voting Disk 被两个节点同时写导致脑裂。oracle.crs.11_2_0_1_0_*.bak这些文件就是 OCR 的自动备份如果当前 OCR 坏了可以用ocrconfig -restore从备份恢复。解决先crsctl stop crs -f停掉集群然后ocrconfig -restore C:\grid\cdata\oracle.crs.11_2_0_1_0_1269966755500.bak再crsctl start crs。如果 Voting Disk 丢了得用crsctl replace votedisk重新指定。5.4 现象安装到 80% 卡在“正在运行 exectask.bat”原因exectask.bat在远程节点上执行时被 UAC 拦了或者域用户没有“作为服务登录”权限。解决把安装账户加到本地管理员组然后在secpol.msc的“本地策略-用户权限分配”里把该账户加到“作为服务登录”和“作为批处理作业登录”。如果还卡看%ORACLE_HOME%\cfgtoollogs\crsconfig\下的exectask*.log。5.5 现象装完以后监听器起不来报“TNS-12560”原因listener.ora和tnsnames.ora里的 SCAN 名称解析不对或者监听器端口被占用。解决检查%ORACLE_HOME%\network\admin\listener.ora里的LISTENER地址是不是(HOSTmycluster-scan)(PORT1521)然后lsnrctl start看报错。如果端口被占用netstat -ano | findstr 1521找到进程要么改端口要么停掉占用进程。注意SCAN 在 11g R2 里必须能解析到三个 IP如果你只有一个 IP得用srvctl modify scan -scanname mycluster-scan改成单 IP 模式。6. 装完之后的验证与一个能省半天时间的技巧装完 Grid Infrastructure 只是第一步验证集群真的可用得按顺序跑这几条命令。先crsctl check crs确认CSS、CRS、EVM三个服务都是online。然后crs_stat -t看所有ora.*资源是不是ONLINE。接着asmcmd lsdg确认磁盘组是MOUNTED且free_mb正常。最后srvctl config scan确认 SCAN 的 VIP 和端口都对。如果这几步都过了再装数据库实例用dbca建库时选“RAC 数据库”它会自动把实例注册到集群里。我自己的习惯是装完 Grid 之后立刻把%ORACLE_HOME%\cdata\下的oracle.crs.*.bak文件复制一份到别的盘。这些备份是 OCR 的后悔药一旦 OCR 损坏没有备份就只能重建集群。另外runcluvfy.bat在装完之后还能跑post crsinst检查命令是runcluvfy.bat stage -post crsinst -n node1,node2它会验证集群服务是否真的在运行、OCR 是否可读、Voting Disk 是否一致。这个检查比crs_stat更细能提前发现一些“看起来正常但实际有隐患”的问题。从那以后我每次装完 Grid都强制走一遍post crsinst再手动备份一次 OCR才敢往上放数据库。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进