ARTICLE DETAIL

资讯详情

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

AIX 静默安装 Oracle 11gR2 RAC 全流程实战指南

AIX 静默安装 Oracle 11gR2 RAC 全流程实战指南 1. 为什么要在 AIX 上做静默安装 RAC在 AIX 上部署 Oracle 11gR2 RAC很多人第一反应是开图形界面跑 runInstaller点鼠标一路 Next。但真正在生产环境干过几轮的人都知道图形化安装有两个绕不开的坎一是 AIX 服务器通常放在机房X11 转发要么卡得要命要么根本连不上二是 RAC 至少两个节点图形界面下你没法保证两边操作完全一致手工点选很容易出现参数偏差。静默安装配合 response file本质上是把安装过程变成一份可版本管理、可复用、可审计的配置文件这才是 DBA 该有的姿势。这篇文章面向的是已经具备一定 AIX 和 Oracle 基础、准备在生产或准生产环境部署 11gR2 RAC 的运维人员。我会把整个静默安装的完整链路拆开讲——从 AIX 系统层面的前置检查、用户与内核参数配置到 Grid Infrastructure 和 Database 两套 response file 的逐项拆解再到 root 脚本执行、集群验证和常见报错排查。所有参数我都会说明为什么这么设而不是让你照抄一份不知道来路的模板。需要提前说明的是11gR2 的 RAC 安装分为两大阶段先装 Grid Infrastructure也就是常说的 CRS再装 Oracle Database 软件最后用 DBCA 建库。静默安装的核心就是把这三个阶段的交互输入全部固化到 response file 里。下面按实际执行顺序展开。2. 安装前的 AIX 系统准备2.1 硬件与操作系统基线检查AIX 上跑 11gR2 RAC官方对 OS 版本有明确要求。11gR2 支持的 AIX 版本是 6.1 TL 和 7.1TL 级别不能太低否则某些系统调用和库文件对不上。我一般建议至少 7.1 TL3 以上补丁打全。检查命令很简单oslevel -s输出类似7100-03-05-1524说明是 7.1 TL3 SP5。如果 TL 太低先打补丁再往下走别抱侥幸心理后面 root 脚本跑一半失败排查起来更痛苦。内存和 swap 方面11gR2 Grid Infrastructure 单节点至少需要 4GB 物理内存但 RAC 场景下我建议每节点不低于 16GB因为 ASM 实例、CRS 守护进程、数据库实例都吃内存。swap 的规则是物理内存小于 8GB 时 swap 等于内存的 1.5 倍8GB 到 32GB 之间 swap 至少等于内存超过 32GB 时 swap 可以适当小于内存但不少于 32GB。用lsattr和svmon可以看当前配置。网络这块是 RAC 的重头戏。每个节点至少需要三块网卡一块公网public、一块私网private也就是心跳、一块可选的管理网。公网和私网必须物理隔离私网建议用万兆或者至少千兆直连交换机别用交叉线凑合。检查网卡状态lsdev -Cc adapter | grep ent ifconfig -a私网网卡要确认 MTU 设置如果交换机支持巨帧把私网 MTU 调到 9000 能显著降低心跳延迟。命令是chdev -l entX -a mtu9000 -P改完重启网卡生效。2.2 用户、组与目录规划Oracle 在 AIX 上的用户体系比较固定。需要创建三个组和两个用户oinstall组Oracle 软件 inventory 的属组dba组数据库管理权限asmadmin组ASM 管理权限11gR2 新增grid用户装 Grid Infrastructure属组 oinstall、asmadmin、dbaoracle用户装 Database 软件属组 oinstall、dba创建命令mkgroup -a id1001 oinstall mkgroup -a id1002 dba mkgroup -a id1003 asmadmin mkuser id1101 pgrpoinstall groupsoinstall,asmadmin,dba home/home/grid shell/usr/bin/ksh grid mkuser id1102 pgrpoinstall groupsoinstall,dba home/home/oracle shell/usr/bin/ksh oracle这里有个坑AIX 的mkuser默认不设密码得用passwd单独设。另外 grid 和 oracle 用户的ulimit必须放开否则安装时 root 脚本会报错。编辑/etc/security/limits在文件末尾追加grid: fsize -1 nofiles 65536 nproc 16384 data -1 stack -1 core -1 oracle: fsize -1 nofiles 65536 nproc 16384 data -1 stack -1 core -1改完用ulimit -a在 grid 和 oracle 用户下确认。nofiles这个参数特别关键11gR2 的 CRS 进程会打开大量文件描述符默认 2000 根本不够装到一半报 too many open files 就是它。目录规划上我习惯把软件和数据的路径分开Grid Infrastructure 软件/u01/app/11.2.0/gridDatabase 软件/u01/app/oracle/product/11.2.0/dbhome_1Oracle Base/u01/app/oracleInventory/u01/app/oraInventory创建目录并授权mkdir -p /u01/app/11.2.0/grid mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1 mkdir -p /u01/app/oraInventory chown -R grid:oinstall /u01/app/11.2.0/grid chown -R oracle:oinstall /u01/app/oracle chown -R grid:oinstall /u01/app/oraInventory chmod -R 775 /u01/app2.3 内核参数与系统调优AIX 的内核参数用no命令调整11gR2 对几个关键参数有硬性要求。下面是我在生产环境验证过的配置no -p -o shmmax17179869184 no -p -o shmmin1 no -p -o shmmni4096 no -p -o shmseg10 no -p -o semmsl1024 no -p -o semmns65536 no -p -o semopm1024 no -p -o semmni4096 no -p -o maxuproc16384 no -p -o ncargs256shmmax设成 16GB这是单个共享内存段的最大值11gR2 的 SGA 如果超过这个值会报 ORA-27123。semmns是系统级信号量总数RAC 场景下进程多65536 是安全值。maxuproc是单用户最大进程数16384 够用。ncargs影响命令行参数长度安装脚本里有些命令参数很长256 能避免截断。改完用no -a | grep shmmax确认注意-p是持久化到/etc/tunables/nextboot重启后生效。如果不想重启去掉-p直接改当前值但生产环境建议持久化。另外 AIX 的aio异步 IO必须开启11gR2 的 ASM 依赖它lsdev -Cc aio如果状态是 Defined用mkdev -l aio0启用。还要确认maxreqs和kproc参数ioo -p -o aio_maxreqs65536和ioo -p -o aio_server_inactivity300。2.4 网络与 hosts 解析RAC 要求所有节点之间能通过主机名互相解析且公网和私网都要有对应的主机名。假设两个节点规划如下节点公网 IP公网主机名私网 IP私网主机名VIPnode1192.168.1.11rac110.0.0.11rac1-priv192.168.1.101node2192.168.1.12rac210.0.0.12rac2-priv192.168.1.102SCAN 用三个 IP192.168.1.201/202/203对应一个 SCAN 名称rac-scan。/etc/hosts在两个节点上必须完全一致192.168.1.11 rac1 192.168.1.12 rac2 192.168.1.101 rac1-vip 192.168.1.102 rac2-vip 192.168.1.201 rac-scan 192.168.1.202 rac-scan 192.168.1.203 rac-scan 10.0.0.11 rac1-priv 10.0.0.12 rac2-priv注意VIP 和 SCAN 的 IP 必须在公网网段且不能被其他设备占用。安装前用ping确认这些 IP 没有响应否则 Grid Infrastructure 配置时会失败。私网网卡建议在/etc/hosts里只放私网主机名不要混入公网解析。另外 AIX 的resolv.conf如果配了 DNS要确保 DNS 不会覆盖 hosts 里的解析必要时调整/etc/netsvc.conf为hostslocal,bind。3. Grid Infrastructure 静默安装实战3.1 response file 逐项拆解Grid Infrastructure 的静默安装依赖两个文件grid_install.rsp和grid_config.rsp或者合并成一个。11gR2 的模板在安装介质response/目录下我一般复制出来改。核心参数如下oracle.install.responseFileVersion/oracle/install/rspfmt_crsinstall_response_schema_v11_2_0 INVENTORY_LOCATION/u01/app/oraInventory ORACLE_BASE/u01/app/grid oracle.install.optionCRS_CONFIG ORACLE_HOME/u01/app/11.2.0/grid oracle.install.asm.OSDBAasmdba oracle.install.asm.OSASMasmadmin oracle.install.asm.OSOPERasmoper oracle.install.asm.diskGroup.nameOCR oracle.install.asm.diskGroup.redundancyNORMAL oracle.install.asm.diskGroup.AUSize4 oracle.install.asm.diskGroup.disks/dev/rhdisk1,/dev/rhdisk2,/dev/rhdisk3 oracle.install.asm.diskGroup.diskDiscoveryString/dev/rhdisk* oracle.install.asm.monitorPasswordoracle oracle.install.crs.config.clusterNamerac-cluster oracle.install.crs.config.scanTypeLOCAL_SCAN oracle.install.crs.config.gpnp.scanNamerac-scan oracle.install.crs.config.gpnp.scanPort1521 oracle.install.crs.config.ClusterConfigurationSTANDALONE oracle.install.crs.config.configureAsExtendedClusterfalse oracle.install.crs.config.clusterNodesrac1:rac1-vip:HUB,rac2:rac2-vip:HUB oracle.install.crs.config.networkInterfaceListent0:192.168.1.0:1,ent1:10.0.0.0:5 oracle.install.crs.config.useIPMIfalse oracle.install.crs.config.ignoreDownNodesfalse oracle.install.config.managementOptionNONE oracle.install.config.omsPort0 oracle.install.crs.config.gpnp.configureGNSfalse逐项说几个容易出错的oracle.install.asm.diskGroup.disks这里用的是 ASM 磁盘的裸设备路径。AIX 上 ASM 用裸设备raw device不是块设备。/dev/rhdisk1里的r就是 raw 的意思。磁盘权限必须归 grid 用户和 asmadmin 组且权限是 660chown grid:asmadmin /dev/rhdisk1 /dev/rhdisk2 /dev/rhdisk3 chmod 660 /dev/rhdisk1 /dev/rhdisk2 /dev/rhdisk3oracle.install.crs.config.networkInterfaceList这个参数格式是网卡名:网段:接口类型。接口类型 1 是公网5 是私网。这里 ent0 是公网ent1 是私网。网段要写网络地址不是主机地址。oracle.install.crs.config.clusterNodes格式是主机名:VIP名:角色HUB 表示这个节点是集群成员。如果是多节点用逗号分隔。oracle.install.asm.diskGroup.redundancy我设的是 NORMAL也就是双副本至少需要三块盘。如果测试环境只有两块盘改成 EXTERNAL但生产环境强烈建议 NORMALOCR 和 Voting Disk 丢了就是灾难。3.2 执行安装与 root 脚本response file 准备好后用 grid 用户执行cd /u01/software/grid ./runInstaller -silent -responseFile /home/grid/grid_install.rsp -ignorePrereq -waitforcompletion-ignorePrereq是跳过前置检查我一般第一次跑不加这个参数让安装程序把系统层面的问题都报出来修完再跑。-waitforcompletion让安装程序等 root 脚本执行完再退出否则它会提示你手动去跑。安装过程中会提示你以 root 身份执行两个脚本/u01/app/oraInventory/orainstRoot.sh /u01/app/11.2.0/grid/root.shorainstRoot.sh在两个节点都要跑root.sh也是两个节点都要跑但必须先在 node1 跑完再跑 node2。root.sh 执行时会自动配置 CRS、启动 ASM、创建 OCR 和 Voting Disk。跑完后用crsctl check cluster -all验证crsctl check cluster -all输出应该显示两个节点的 CRS 都是 online。再用crsctl stat res -t看资源状态所有资源应该是 ONLINE。3.3 ASM 磁盘组与 OCR 验证root.sh 跑完后OCR 和 Voting Disk 已经自动创建在 OCR 磁盘组里。用ocrcheck确认ocrcheck输出会显示 OCR 版本、总空间、可用空间和备份状态。再用crsctl query css votedisk看 Voting Diskcrsctl query css votediskNORMAL 冗余下应该看到三个 Voting Disk分布在三块盘上。如果只看到一个说明磁盘组冗余配置有问题得回查 response file。ASM 实例的验证用asmcmdasmcmd lsdg应该能看到 OCR 磁盘组状态 MOUNTED冗余类型 NORMAL。如果后面还要建数据磁盘组可以在这个阶段一起规划但 11gR2 的 Grid Infrastructure 安装只要求 OCR 磁盘组数据磁盘组可以后面用 asmca 或者命令行加。4. Database 软件静默安装与建库4.1 Database response file 配置Database 软件的静默安装用 oracle 用户response file 模板在数据库安装介质的response/db_install.rsp。核心参数oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle.install.optionINSTALL_DB_SWONLY ORACLE_HOSTNAMErac1 UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory SELECTED_LANGUAGESen,zh_CN ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.isCustomInstallfalse oracle.install.db.DBA_GROUPdba oracle.install.db.OPER_GROUPdba oracle.install.db.config.starterdb.typeGENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBNameorcl oracle.install.db.config.starterdb.SIDorcl1 oracle.install.db.config.starterdb.characterSetAL32UTF8 oracle.install.db.config.starterdb.memoryOptionfalse oracle.install.db.config.starterdb.installExampleSchemasfalse oracle.install.db.config.starterdb.enableSecuritySettingstrue oracle.install.db.config.starterdb.password.ALLoracle oracle.install.db.config.starterdb.managementOptionNONE oracle.install.db.config.starterdb.dbcontrol.enableEmailNotificationfalse oracle.install.db.config.starterdb.automatedBackup.enablefalse oracle.install.db.config.starterdb.storageTypeASM oracle.install.db.config.starterdb.fileSystemStorage.dataLocation/u01/app/oracle/oradata oracle.install.db.config.asm.diskGroupDATA oracle.install.db.config.asm.ASMSNMPPasswordoracleoracle.install.optionINSTALL_DB_SWONLY表示只装软件不建库建库后面用 DBCA 静默做。这样分两步的好处是软件安装和建库解耦出问题好定位。oracle.install.db.config.starterdb.storageTypeASM表示用 ASM 存储。如果 DATA 磁盘组还没建这里会报错所以要先确保 ASM 里已经有 DATA 磁盘组。建磁盘组的命令asmcmd mkdg DATA -r NORMAL /dev/rhdisk4 /dev/rhdisk5 /dev/rhdisk6oracle.install.db.config.starterdb.characterSetAL32UTF8是字符集生产环境建议 AL32UTF8兼容性最好。如果老系统是 ZHS16GBK迁移时要注意字符集转换问题。4.2 执行安装与 root 脚本用 oracle 用户执行cd /u01/software/database ./runInstaller -silent -responseFile /home/oracle/db_install.rsp -ignorePrereq -waitforcompletion安装完成后同样提示跑 root 脚本/u01/app/oracle/product/11.2.0/dbhome_1/root.sh这个脚本只需要在每个节点跑一次但必须在所有节点都跑因为 RAC 的 Database 软件是分布式的。跑完后用$ORACLE_HOME/OPatch/opatch lsinventory确认软件安装完整。4.3 DBCA 静默建库建库用 DBCA 的静默模式需要准备一个建库模板。11gR2 的 DBCA 支持-silent加-createDatabase参数但更规范的做法是用 response file。模板在$ORACLE_HOME/assistants/dbca/dbca.rsp核心参数responseFileVersion/oracle/assistants/rspfmt_dbca_response_schema_v11_2_0 gdbNameorcl sidorcl1 databaseConfigTypeRAC RACOneNodeDBName RACOneNodeServiceName policyManagedfalse createServerPoolfalse serverPoolName cardinality forcefalse pqPoolName pqCardinality createAsContainerDatabasefalse numberOfPDBs pdbName useLocalUndoForPDBstrue pdbAdminPassword templateName/u01/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc sysPasswordoracle systemPasswordoracle emConfigurationNONE emExpressPort5500 runCVUChecksfalse dbsnmpPasswordoracle omsHost omsPort emUser emPassword dvConfigurationfalse dvUserName dvUserPassword dvAccountManagerName dvAccountManagerPassword olsConfigurationfalse datafileDestinationDATA recoveryAreaDestinationDATA storageTypeASM diskGroupNameDATA asmsnmpPasswordoracle characterSetAL32UTF8 nationalCharacterSetAL16UTF16 registerWithDirServicefalse listenersLISTENER variablesFile variables initParams sampleSchemafalse memoryPercentage40 databaseTypeMULTIPURPOSE automaticMemoryManagementfalse totalMemory0databaseConfigTypeRAC是关键告诉 DBCA 建 RAC 库。datafileDestinationDATA表示数据文件放 DATA 磁盘组。memoryPercentage40表示 SGA 占物理内存的 40%这个值根据实际情况调生产环境一般 50% 到 70%。执行建库dbca -silent -responseFile /home/oracle/dbca.rsp建库过程会创建实例、配置监听、注册服务。完成后用srvctl status database -d orcl确认两个节点的实例都起来了srvctl status database -d orcl输出应该显示Instance orcl1 is running on node rac1和Instance orcl2 is running on node rac2。5. 常见问题与排查实录5.1 安装阶段典型报错静默安装最怕的就是跑到一半失败日志在$ORACLE_HOME/cfgtoollogs和/u01/app/oraInventory/logs下。下面是我踩过的几个高频坑报错信息根因解决方法PRVF-5636: The DNS response time is too slowDNS 解析慢或 hosts 配置不当调整/etc/netsvc.conf为hostslocal,bind或临时注释 DNSPRVF-5436: The network interfaces are not configured properly私网网卡未识别或 MTU 不一致检查ifconfig -a确认私网网卡 upMTU 两端一致ORA-15031: disk specification /dev/rhdisk1 matches no disks裸设备权限不对或未识别chown grid:asmadminchmod 660确认lsdev能看到CRS-2674: Start of ora.asm failedASM 实例启动失败通常是磁盘组问题查$GRID_HOME/log/node/alertnode.log确认磁盘组冗余和磁盘数匹配root.sh卡在Adding daemon to inittabAIX 的 inittab 锁或权限问题检查/etc/inittab权限确认 root 用户能写PRVF-5636这个坑特别常见。AIX 默认的netsvc.conf可能是hostsbind,local也就是先查 DNS 再查 hosts。如果 DNS 服务器响应慢安装程序的前置检查会超时。改成hostslocal,bind后先查 hosts 文件解析瞬间完成。5.2 集群验证与日常检查安装完成后日常巡检用几个命令就够了crsctl check cluster -all crsctl stat res -t ocrcheck crsctl query css votedisk srvctl status database -d orclcrsctl stat res -t的输出要重点看几个资源ora.asm、ora.OCR.dg、ora.LISTENER_SCAN1.lsnr、ora.orcl.db。任何一个不是 ONLINE 都要查日志。日志路径在$GRID_HOME/log/node/下按资源名分目录。ASM 磁盘组的空间也要定期看asmcmd lsdg关注Free_MB和Usable_File_MBOCR 磁盘组不需要太大但 DATA 磁盘组如果剩余空间低于 20% 就要考虑扩容。5.3 独家避坑心得第一个心得response file 里的密码字段如果包含特殊字符比如$、#、在 shell 里执行时可能被转义。我一般先用简单密码跑通流程装完再用orapwd和ALTER USER改复杂密码。别在安装阶段跟特殊字符较劲。第二个心得AIX 的裸设备在重启后权限可能被重置。如果服务器重启后 ASM 起不来先检查/dev/rhdisk*的属主和权限。可以把授权命令写进/etc/rc.local或者用chdev的持久化属性但最稳妥的是在 root.sh 跑完后记录一份权限清单重启后比对。第三个心得静默安装的日志默认不覆盖每次安装会生成新的时间戳目录。如果反复失败日志目录会很大记得清理/u01/app/oraInventory/logs下的旧日志否则可能撑爆/u01文件系统。第四个心得SCAN 的 IP 如果配了三个但 DNS 只解析出一个安装时可能报PRVF-4664。要么在 hosts 里把三个 SCAN IP 都写上要么确保 DNS 正确配置了三条 A 记录。测试环境我一般直接用 hosts省去 DNS 的麻烦。6. 安装后的收尾与扩展Grid Infrastructure 和 Database 都装完后还有几件事要做。一是配置监听器的静态注册确保实例启动时能自动注册到 SCAN 监听。11gR2 默认是动态注册但 RAC 场景下建议在listener.ora里加静态注册条目避免实例启动瞬间监听器还没起来导致连接失败。二是配置 TAFTransparent Application Failover在tnsnames.ora里加FAILOVER_MODE参数让客户端在节点故障时自动切换到另一个节点。这个对业务连续性很重要但配置起来不难关键是测试。三是定期备份 OCR。虽然 OCR 有自动备份但自动备份只在 OCR 内容变化时触发且默认保留最近几个版本。我习惯每周手动ocrconfig -export一次到文件系统保留一个月。恢复的时候用ocrconfig -import比从自动备份恢复更可控。四是 ASM 磁盘组的扩容。如果 DATA 磁盘组空间不够用asmcmd加盘asmcmd alter diskgroup DATA add disk /dev/rhdisk7 rebalance power 8;rebalance power控制重平衡速度1 到 11生产环境建议 4 到 6太高会影响业务 IO。这套静默安装的流程我在多个 AIX 环境上跑过从 7.1 TL3 到 TL5从 11.2.0.3 到 11.2.0.4整体稳定。关键是把前置检查和 response file 做扎实别急着跑 runInstaller。安装日志要养成看的习惯报错信息里往往直接告诉你哪个参数不对。最后再分享一个小技巧把整个安装过程写成 shell 脚本response file 用变量替换这样换一套环境只需要改几个变量几分钟就能跑完比手工点鼠标靠谱得多。
返回列表