拓冰建站拓冰建站
首页 / 资讯中心 / 正文

CentOS 7.8部署Oracle RAC 21c:环境规划与静默安装实战

1. 安装前的环境规划1.1 主机与网络规划CentOS 7.8上装RAC 21c这事说起来不算新鲜但在真正动手之前能把网络规划做扎实的人真不多。我见过太多同学在安装过程中折在IP规划这一关SCAN域名解析不了、VIP在节点间漂移异常、私有网络丢包严重这些问题基本都能追溯到最开始没有把网段、主机名、解析方式理清楚。RAC 21c要求每个节点至少有两块网卡一块走public网络承载业务流量、VIP、SCAN一块走private网络承载节点间Cache Fusion等高带宽内部通信。在实际规划时我习惯把private网络的网段独立出来比如用192.168.100.0/24这个网段和public网络完全隔离有条件的话直接用交换机单独划分VLAN或者两台服务器之间用千兆甚至万兆直连线这样能最大程度避免内部通信受外部干扰。下面是我这套环境里用的规划两个节点加一个SCAN域名IP规划如下表所示节点主机名Public IP私有IPVIP节点1rac1192.168.1.101192.168.100.101192.168.1.111节点2rac2192.168.1.102192.168.100.102192.168.1.112SCANrac-scan.example.com192.168.1.110--这里提醒一句VIP和SCAN IP一定不要自己手动绑定到网卡上这些IP由Grid Infrastructure简称GI自动管理。SCAN IP既可以配置在DNS上也可以写进/etc/hosts。如果只是测试环境把SCAN的hosts条目加到所有节点就行注意格式要规范域名在前短名在后例如 192.168.1.110 rac-scan.example.com rac-scan顺序乱了有时会出现解析异常。1.2 共享存储规划RAC的核心就是多个节点访问同一份数据所以共享存储必须提前准备好。生产环境一般用SAN存储或者NAS我这套环境用的是虚拟化平台模拟的共享SCSI磁盘效果是等价的做法也通用。共享磁盘的划分逻辑其实很清晰主要分三类OCR和Voting File集群管理必须的元数据、数据文件磁盘组、快速恢复区磁盘组。这里我给出一份适合测试环境的规划设备名大小用途/dev/sdb20GBOCR Voting File放同一个磁盘组/dev/sdc100GBDATA磁盘组数据文件/dev/sdd50GBFRA磁盘组归档日志、备份这里有个很重要的经验ASM磁盘在底层不要做文件系统更不要格式化这是给ASM直接使用的裸设备。如果用udev绑定设备名建议规则里加上OWNERgrid、GROUPasmadmin、MODE0660这样重启后设备权限不会漂移。我在实际运维中见过很多次因为重启后/dev/sdb变成了/dev/sde导致整个集群起不来的情况根源就是udev规则没写对或者没写完整。1.3 安装介质与版本说明21c这个版本比较特殊它是Oracle的Innovation Release不是长期支持版本官方主推的还是19c作为长期稳定版本。但对于测试、学习、评估新功能来说21c完全够用它引入了区块链表、原生JSON、机器学习相关的内置功能在我个人看来21c更像是一个探路版本给后续23c等版本打基础的。安装介质有两个压缩包分别是数据库软件和Grid InfrastructureGI软件LINUX.X64_213000_grid_home.zip约2.7GBLINUX.X64_213000_db_home.zip约3GB有一点和旧版本不一样21c的Grid安装包解压后就是GRID_HOME直接把zip解压到目标目录即可不需要像12c那样再单独解压到临时目录再复制。下面我在环境准备部分会详细说。2. 系统基础配置与前置准备2.1 主机名、hosts与SSH互信先设置主机名两个节点分别执行hostnamectl set-hostname rac1 # 节点2执行 hostnamectl set-hostname rac2然后编辑/etc/hosts把public、private、VIP、SCAN都写清楚cat /etc/hosts EOF 192.168.1.101 rac1.example.com rac1 192.168.1.102 rac2.example.com rac2 192.168.1.111 rac1-vip.example.com rac1-vip 192.168.1.112 rac2-vip.example.com rac2-vip 192.168.100.101 rac1-priv.example.com rac1-priv 192.168.100.102 rac2-priv.example.com rac2-priv 192.168.1.110 rac-scan.example.com rac-scan EOF写完后强烈建议检查一下有没有多余的空格和TAB尤其要删掉CentOS自动生成的那几行IPv6条目比如::1 rac1这种。如果不是刻意要用IPv6最好把/etc/hosts里IPv6相关的行全部注释掉否则GI在启动监听和VIP资源时偶尔会去尝试解析IPv6地址导致资源启动时间异常变长甚至报一些奇怪的错误。SSH互信这一步很多人会忽略但GI安装时要用ssh在节点之间同步文件互信没配好安装过程百分百报错。两个用户grid和oracle都需要配置su - grid ssh-keygen -t rsa -N -f ~/.ssh/id_rsa ssh-copy-id gridrac1 ssh-copy-id gridrac2oracle用户同理。配置完最好验证一下ssh rac1 hostname、ssh rac2 hostname能免密返回结果才算配好。2.2 内核参数与用户资源限制内核参数是Oracle安装预检查的重点很多安装失败都是因为内核参数没调好。我在/etc/sysctl.conf里是这样配置的fs.file-max 6815744 fs.aio-max-nr 1048576 kernel.shmall 1073741824 kernel.shmmax 4398046511104 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 vm.swappiness 10 vm.dirty_ratio 30 vm.dirty_background_ratio 3这里简单解释几个容易搞混的参数kernel.shmmax表示单个共享内存段的最大大小单位字节。如果服务器内存是16GB建议设成物理内存的一半左右比如8GB就是8589934592不要设得太小否则SGA大小受限。kernel.shmall表示共享内存页的总数理论上是shmmax除以页大小通常4KB可以直接设成一个很大的值比如1073741824省得计算。kernel.sem的四个值分别对应SEMMSL每个信号量集的最大信号量数、SEMMNS系统范围最大信号量数、SEMOPM每次semop操作的最大信号量数、SEMMNI系统范围信号量集的最大数量。这四个值必须同时满足少一个预检查就报错。配好以后执行 sysctl -p 让它生效。接着配置用户资源限制编辑 /etc/security/limits.conf加上grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 grid soft stack 10240 grid hard stack 32768 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768注意nofile和nproc的生效范围。修改完之后最好重新登录一下grid/oracle用户然后执行ulimit -n、ulimit -u确认是否生效不要等到安装预检查时才发现没有生效那样会浪费很多时间。用户和用户组也比较重要groupadd oinstall groupadd dba groupadd asmadmin groupadd asmdba groupadd asmoper groupadd backupdba groupadd dgdba groupadd kmdba groupadd racdba useradd -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba oracle useradd -g oinstall -G dba,asmdba,asmadmin,asmoper,backupdba,dgdba,kmdba,racdba grid用户组的设计不是拍脑袋GI和数据库进程需要不同权限的组来区分操作系统身份验证。比如asmadmin组是ASM实例的管理员组只有grid用户在这个组里才有权限管理ASMdba组是数据库管理员组oracle用户在这个组里才能用操作系统认证登录数据库。这些组如果少建一个安装预检查一样会报错。目录规划上我推荐统一放在/u01下mkdir -p /u01/app/21c/grid mkdir -p /u01/app/oracle/product/21c/dbhome_1 mkdir -p /u01/app/oracle chown -R grid:oinstall /u01/app/21c chown -R grid:oinstall /u01/app/oraInventory chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01/app2.3 依赖包与目录权限CentOS 7.8的依赖包安装我一般直接用yum一把梭yum install -y bc binutils compat-libcap1 compat-libstdc-33 \ gcc gcc-c elfutils-libelf elfutils-libelf-devel glibc glibc-devel \ ksh libaio libaio-devel libgcc libstdc libstdc-devel \ libX11 libXau libXext libXi libXtst libXrender make \ net-tools nfs-utils smartmontools sysstat unixODBC unixODBC-devel这里有个小坑CentOS 7.8的官方yum源里没有compat-libstdc-33这个包它属于老版本兼容库Oracle预检查时会扫这个包。解决方案有两个一是配置epel源之后安装二是直接把CentOS 7的ISO挂载后从Packages目录里找rpm手动装。实在装不上的话预检查那一步可以用-ignorePrereq参数跳过但后续编译Oracle内部组件时偶尔会有问题所以还是建议尽量装齐。防火墙和SELinux也是必须处理的。RAC节点间通信端口非常多包括1521、1522、5500等与其一个个放行不如测试环境直接关闭防火墙systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/configSELinux如果保持enforcingGI的很多脚本在启动资源时会碰到SELinux上下文限制报各种Permission denied排查起来非常头疼所以直接禁用最省事。时钟同步方面两个节点的时间差不能超过一定范围否则集群心跳会出问题。可以用ntpdate做一次手动同步测试环境也可以直接把chronyd配置好。目录权限这块再次强调ASM磁盘绑定的问题。我用udev规则来固定设备名在 /etc/udev/rules.d/99-oracle-asm.rules 里写KERNELsd*, SUBSYSTEMblock, PROGRAM/usr/lib/udev/scsi_id -g -u -d /dev/$name, RESULT36000c2966a0afa34b7b8a3ce38, SYMLINKasm-diskb, OWNERgrid, GROUPasmadmin, MODE0660RESULT后面是磁盘的SCSI ID每个环境都不一样可以用 /usr/lib/udev/scsi_id -g -u -d /dev/sdb 查询。写完规则后执行 udevadm control --reload-rules 和 udevadm trigger 使其生效然后在/dev下检查有没有生成对应的asm-diskb符号链接。到这里系统层面的准备工作就全部做完了。接下来进入正式安装环节。3. 图形模式安装Grid Infrastructure实操3.1 图形界面环境准备很多人在图形安装这一步栽跟头按理说图形界面最直观但恰恰因为界面依赖DISPLAY环境变量导致各种黑屏、闪退、起不来界面的问题。尤其是某些基于Linux的服务器为了节省资源只装了命令行模式这下就更难办了。先说解决方案我再逐个解释原理。方案一服务器本机有图形桌面GNOME/KDE直接用grid用户登录进桌面再开终端执行安装脚本这是最简单的。方案二远程X11转发。用Xshell、MobaXterm或PuTTY等工具连接连接前打开X11转发选项在Linux服务器上先执行 export DISPLAY:0.0然后执行 xhost 放开访问控制。如果是在Windows上MobaXterm自带X server打开SSH会话后DISPLAY会自动设置好一般不用手动配。方案三VNC。服务器上安装tigervnc-server启动VNC会话后从本地用VNC客户端连上去看到的界面就是一个虚拟桌面操作体验和本机桌面一样。这个方案最稳但需要额外安装软件。方案四用Xvfb这种虚拟显示工具不真实显示画面但在内存中模拟一个X serverrunInstaller的图形渲染全部走Xvfb适合自动化脚本。不过既然都上Xvfb了不如直接用静默安装这个方案我在后面单独讲。在命令行模式下如果直接执行gridSetup.sh经常碰到报错DISPLAY not set这是因为当前SSH会话没有继承X server的显示环境变量。解决方法是export DISPLAY:0.0 xhost 设置好之后再执行gridSetup.sh图形窗口就能正常弹出来了。如果还是黑屏或者闪退多半是X11转发没开或者客户端X server没启动。3.2 图形安装GI的关键步骤环境准备好后开始GI安装。先把网格软件zip解压到GRID_HOME目录unzip -q LINUX.X64_213000_grid_home.zip -d /u01/app/21c/grid chown -R grid:oinstall /u01/app/21c/grid然后切换到grid用户启动安装程序su - grid export DISPLAY:0.0 xhost cd /u01/app/21c/grid ./gridSetup.sh图形界面上按下面顺序操作第一页Welcome直接点Next。Configuration Option页面选择Set Up Grid Infrastructure for a Cluster这是集群安装模式千万别选成Standalone Server那是单机ASM模式选错了装出来不是RAC。类型选择也会弹出界面选Cluster。接着是Cluster Name和SCAN配置。Cluster Name随意取比如rac-clusterSCAN Name填rac-scan.example.com注意这个域名要在/etc/hosts里配置好或者在DNS上解析。节点配置页面点击Add添加节点输入rac2的主机名和VIP主机名填写SSH连接信息安装程序会自动检查互信是否配置正确。走到这一步时如果SSH互信没配好界面会直接红字报错返回去配好再回来。网络接口配置页能看到eth0和eth1两张网卡分别标记为Public和Private。这里有个容易混淆的点页面上的Interface Name就是系统网卡名Address是网段我们要把public网卡选为eth0 192.168.1.0private网卡选为eth1 192.168.100.0。ASM磁盘组配置页选择Create ASM Disk Group。磁盘组名称建议叫DATA冗余类型选External测试环境不需要冗余底层存储本身有多副本。把之前udev生成的asm-diskb、asm-diskc添加进去。Disk Discovery Path那边确认一下是否能看到这些磁盘看不到就检查udev规则和权限。组配置页面按默认就行OSASM对应asmadminOSDBA对应asmdbaOSOPER对应asmoper。预检查页面会列出一堆检查项有红叉的项需要处理。常见的红叉是缺少某个包或者内核参数不匹配。小问题可以直接忽略大问题比如缺包就只能去补装装好之后回来点Check Again。确认Summary没问题后开始安装。中途会提示你用root用户执行两个脚本这是整个安装过程最关键的一步通常是在两个节点上都执行sh /u01/app/oraInventory/orainstRoot.sh sh /u01/app/21c/grid/root.shroot.sh在执行过程中会完成OCR的配置、集群资源的注册、voting disk的初始化等工作执行时注意看输出。第一个节点root.sh跑完需要等一会儿集群会自动把资源启动起来第二个节点的root.sh执行时由于集群已经起来了速度会明显快很多。3.3 图形连接异常与显示问题排查我在多个环境里帮人排查过图形界面起不来的问题总结下来就三种常见场景第一种DISPLAY没设置。报错是DISPLAY not set或者Cant connect to X server解决方案上面已经写了export DISPLAY:0.0然后xhost 。第二种xhost 报错“unable to open display”。这多半是X server没有启动。如果是远程X11转发确认客户端的X server比如MobaXterm已经启动如果是本机图形桌面确认桌面服务正常。第三种界面能出来但安装过程中卡死或闪退。这种情况大概率是X11转发的网络延迟太高或者带宽不够图形渲染跟不上。建议改用VNC方案或者干脆换静默安装不要在图形界面上死磕。还有一个细节在root执行xhost 的时候最好在同一个终端里先su切换到grid用户再执行安装这样DISPLAY继承的是同一个会话。有些同学在root的终端里执行xhost 然后就切到grid用户另一个会话去执行安装照样报错就是因为X server的访问控制列表里没有对应当前会话的授权。4. 静默安装Grid Infrastructure实操4.1 响应文件模板与参数说明静默安装的核心是响应文件response file本质就是把图形界面上的每一个选项预先写到一个文本文件里安装程序读取文件后按配置执行完全不需要人工参与。这种模式在生产环境批量部署时优势非常明显我甚至觉得凡是需要重复操作的安装都应该用静默方式图形界面只适合偶尔一两次的手工安装。GI的响应文件模板在解压后的Grid home目录里路径是/u01/app/21c/grid/assistants/response/gridInstall.rsp建议先复制一份再修改cp /u01/app/21c/grid/assistants/response/gridInstall.rsp /u01/app/21c/grid/gridInstall_custom.rsp chown grid:oinstall /u01/app/21c/grid/gridInstall_custom.rsp关键是修改下面这些参数oracle.install.responseFileVersion/oracle/install/rspfmt_crsinstall_response_schema_v21.0 oracle.install.optionCRS_CONFIG ORACLE_BASE/u01/app/grid ORACLE_HOME/u01/app/21c/grid oracle.install.asm.OSDBAasmdba oracle.install.asm.OSOPERasmoper oracle.install.asm.OSASMasmadmin oracle.install.crs.config.scanTypeSCAN oracle.install.crs.config.gpnp.scanNamerac-scan.example.com oracle.install.crs.config.gpnp.scanPort1521 oracle.install.crs.config.ClusterNamerac-cluster oracle.install.crs.config.clusterNodesrac1:rac1-vip:rac1-priv,rac2:rac2-vip:rac2-priv oracle.install.crs.config.networkInterfaceListeth0:192.168.1.0:1,eth1:192.168.100.0:5 oracle.install.asm.diskGroup.nameDATA oracle.install.asm.diskGroup.redundancyEXTERNAL oracle.install.asm.diskGroup.disksWithDiskGroupName/dev/asm-diskb,/dev/asm-diskc oracle.install.asm.diskGroup.disks/dev/asm-diskb,/dev/asm-diskc oracle.install.asm.monitorPasswordOracle123 oracle.install.asm.adminPasswordOracle123 oracle.install.config.managementOptionNONE这里解释几个容易写错的参数scanType固定填SCAN除非你有GNSGrid Naming Service才填GNS。networkInterfaceList格式是网卡名:网段:接口类型接口类型1表示Public5表示Private。这个值一定要和实际环境对应如果有三张网卡就写三组用逗号分隔。diskGroup.disksWithDiskGroupName和diskGroup.disks这两个参数都要写前者是磁盘组里候选磁盘的完整路径后者是ASM能看到的磁盘路径。写错一个安装程序就发现不了候选磁盘。密码有复杂度要求不能太简单至少包含大小写字母和数字长度不能太短。4.2 静默安装执行与root.sh响应文件配置好之后执行su - grid cd /u01/app/21c/grid ./gridSetup.sh -silent -responseFile /u01/app/21c/grid/gridInstall_custom.rsp安装过程不会弹任何图形窗口日志输出在当前终端的stdout上同时也会写到$GRID_HOME/cfgtoollogs/目录下的日志文件里。如果执行顺利终端会提示你到指定节点上用root执行配置脚本。这一步千万不要跳过。root.sh是集群初始化的核心脚本包含以下工作创建OCR的备份和恢复配置把GI设置成开机自启动初始化Clusterware资源配置网络资源、HAIP等执行顺序很重要先在第一个节点执行sh /u01/app/21c/grid/root.sh然后等它跑完再在第二个节点执行同样的命令。如果在第一个节点root.sh没跑完就去第二个节点跑集群初始化会冲突导致OCR配置失败。安装完成后用grid用户执行crsctl stat res -t如果看到ora.cssd、ora.diskmon、ora.asm等资源状态都是ONLINE说明GI级别的安装已经成功了。5. 数据库软件与DBCA建库5.1 数据库软件安装图形与静默GI装好之后数据库软件安装相对简单不管图形还是静默核心就是runInstaller。数据库软件同样要先解压到ORACLE_HOME目录unzip -q LINUX.X64_213000_db_home.zip -d /u01/app/oracle/product/21c/dbhome_1 chown -R oracle:oinstall /u01/app/oracle/product/21c/dbhome_1图形安装方式用oracle用户执行runInstallersu - oracle export DISPLAY:0.0 xhost cd /u01/app/oracle/product/21c/dbhome_1 ./runInstaller界面选项选择Set Up Software Only这样先只装软件后面再用DBCA建库。数据库类型选择Oracle Real Application Clusters database installation节点列表里勾选两个节点。静默安装方式数据库软件同样有响应文件模板路径在$ORACLE_HOME/install/response/db_install.rspcp $ORACLE_HOME/install/response/db_install.rsp $ORACLE_HOME/db_install_custom.rsp chown oracle:oinstall $ORACLE_HOME/db_install_custom.rsp关键参数如下oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_BASE/u01/app/oracle ORACLE_HOME/u01/app/oracle/product/21c/dbhome_1 oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPoper oracle.install.db.OSBACKUPDBA_GROUPbackupdba oracle.install.db.OSDGDBA_GROUPdgdba oracle.install.db.OSKMDBA_GROUPkmdba oracle.install.db.OSRACDBA_GROUPracdba oracle.install.db.CLUSTER_NODESrac1,rac2执行命令cd $ORACLE_HOME ./runInstaller -silent -responseFile /u01/app/oracle/product/21c/dbhome_1/db_install_custom.rsp结束后还是需要root执行root.sh这次只在当前节点执行一次即可sh /u01/app/oracle/product/21c/dbhome_1/root.sh5.2 DBCA建库图形与静默数据库软件装完只是具备建库能力真正创建RAC数据库还得靠DBCADatabase Configuration Assistant。如果是图形方式直接执行su - oracle export DISPLAY:0.0 xhost dbca界面操作要点选择Create a database数据库类型选Real Application Clusters database全局数据库名填orcl数据库实例名填ORCL选择所有节点存储类型选Automatic Storage Management磁盘组选DATA管理选项可以勾上EM Express端口默认5500容器数据库可以选Create as Container DatabasePDB名称按需填字符集建议选AL32UTF8如果业务需要中文再考虑ZHS16GBKDBCA建库过程比较耗时主要是建数据字典、跑统计信息、设置回滚段大概10到20分钟看磁盘IO性能。静默建库是我更推荐的方式尤其是需要脚本化交付的场景。模板化命令如下dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl \ -sid orcl \ -sysPassword Oracle123 \ -systemPassword Oracle123 \ -storageType ASM \ -diskGroupName DATA \ -charSet AL32UTF8 \ -dbType RAC \ -nodes rac1,rac2 \ -createAsContainerDatabase true \ -automaticMemoryManagement true这里解释几个参数含义templateName指的是DBCA自带的模板文件General_Purpose.dbc是最常用的通用模板如果不需要示例数据可以换成General_Purpose.dbc配合其他参数。storageType ASM表示数据文件放在ASM磁盘组里diskGroupName指定用哪个磁盘组我们前面建的是DATA。dbType RAC是关键表示创建的是集群数据库配合nodes参数指定在哪些节点上创建实例。automaticMemoryManagement true表示启用自动内存管理简化内存参数配置。静默建库执行过程中终端会显示进度条从1%到100%中途不要按CtrlC中断。如果中断可能会留下半初始化状态的数据库再清理起来会很麻烦。6. 安装验证与高频问题速查6.1 集群资源与数据库状态检查安装完成后的验证环节非常重要不要看到安装成功的提示就松懈了一定要手动检查一遍集群和数据库的状态。首先是集群层面用grid用户执行crsctl stat res -t重点关注几个资源ora.cssd集群同步服务必须是ONLINEora.diskmon磁盘监控服务必须是ONLINEora.asmASM实例必须是ONLINEora.ons、ora.evmdONS事件服务、EVMD事件监控必须ONLINEora.scan1.vipSCAN VIP资源必须ONLINEora.orcl.db数据库资源必须ONLINE接下来检查ASM磁盘组asmcmd lsdg这个命令能看到DATA磁盘组的状态正常情况应该显示MOUNTED状态可用空间和总空间都正常。再检查OCRocrcheck输出中如果有PROT-601: Failed to initialize这类信息说明OCR有问题需要进一步处理。数据库层面用oracle用户执行sqlplus / as sysdba在SQL*Plus里执行select name, open_mode from v$database; select instance_name, status from gv$instance;正常情况下应该看到两个实例状态都是OPEN数据库的open_mode是READ WRITE。如果看到MOUNTED状态说明数据库没有完全打开需要检查alert日志。最后做一次简单的DML测试建一张测试表插几条数据再从另一个实例查询确认两个节点都能正常读写才算真正完成。6.2 高频问题与解决记录我在部署RAC 21c时遇到过不少问题也帮朋友排查过同类问题挑几个典型的记录在这里给后来者参考。问题现象原因分析解决办法预检查报缺少compat-libstdc-33CentOS 7.8默认源里没有这个包配置epel源后安装或者用rpm -ivh手动装实在不行-ignorePrereq跳过root.sh执行到一半卡住或报CRS-2674私网网卡或集群心跳异常检查private网络连通性用ping测试排查/etc/hosts是否配置正确查看$GRID_HOME/log/节点名/alert日志ASM磁盘在图形界面里看不到候选磁盘udev权限或设备名没生效检查udev规则确认/dev/asm-*存在且owner是grid:asmadmin执行udevadm trigger重新触发runInstaller提示DISPLAY not setDISPLAY环境变量未设置export DISPLAY:0.0配合xhost 或用VNC方案解决静默安装时提示无法连接其他节点SSH互信没配好逐个验证ssh rac1、ssh rac2免密登录grid和oracle用户都要配SCAN IP解析失败导致监听起不来/etc/hosts格式不对或DNS解析异常检查hosts文件确认格式是IP 域名 短名用nslookup或ping验证解析数据库实例只起来一个另一个报无权限节点级oracle用户权限或环境变量不一致检查两个节点的.bash_profile确认ORACLE_HOME、ORACLE_SID、PATH正确检查grid/oracle用户的limits.conf静默安装时遇到某些类RHEL发行版编译报error in invoking target库文件系统库或编译器版本与Oracle不兼容确认GCC版本、依赖包版本安装compat-gcc等兼容组件查看对应make日志定位具体目标文件这里特别说一下错误日志怎么看。安装过程中报错不要只盯着终端最后几行打开日志文件才是排查的王道GI安装日志$GRID_HOME/cfgtoollogs/cfgui.log集群资源问题$GRID_HOME/log/相应节点名/alert日志数据库问题$ORACLE_BASE/diag/rdbms/orcl/实例名/trace/alert_实例名.log这些日志里记录了完整的时间线和错误代码很多问题看日志一眼就能定位比反复猜测高效得多。另外一个非常有用的经验是安装前把所有预检查项都跑一遍。在GI安装包解压后先执行cluvfy做一次全量检查cd /u01/app/21c/grid ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose这个命令会把节点上的所有潜在问题提前暴露出来包括内核参数、用户组、依赖包、网络配置、共享存储权限等。把所有报错都处理干净再正式安装比安装到一半再来排查要节省太多时间。我每次部署前都会先跑一遍跑完心里基本就有底了。最后再分享一个操作体会RAC这个东西安装过程本身并不算复杂真正的复杂度在于前置准备和问题排查。把这篇文章里的环境规划、系统配置、依赖安装、响应文件、验证步骤都走一遍多数问题都能提前规避。21c虽然不算长期支持版本但用来熟悉集群架构、测试新特性完全够用。等你在CentOS 7.8上完整跑通一次图形和静默两种安装流程再去看19c、23c的安装会发现套路都是通的区别只在于界面细节和参数名称。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门