资讯详情

资讯详情

CentOS 7.8部署Oracle RAC 21c:图形与静默安装全指南

CentOS 7.8上装Oracle RAC 21c这件事我已经被问了不下十次。先说明一点21c在CentOS 7.x上并不是Oracle官方标称的完美支持组合可实际生产环境里这么干的人并不少毕竟CentOS 7.8和Red Hat 7.8同源大部分依赖和内核行为都能对齐。只要你把系统参数、用户环境、共享存储这几块基础打牢装起来并不比18c/19c费劲。这篇文章我把图形安装和静默安装两条路线完整走一遍前者适合你首次接触RAC时理解组件关系后者适合批量交付和自动化每条线我都会写清楚为什么这么做、哪些地方容易翻车。1. 整体设计与安装方案拆解1.1 为什么是CentOS 7.8 RAC 21c这个组合Oracle 21c是个特殊版本它的定位是“创新版”很多新特性比如单机RAC、区块链表、Native JSON都是先在21c上推。RAC部分的基础架构其实延续了19c的成熟设计GIGrid Infrastructure的安装逻辑、ASM的管理方式、SCAN的架构都没有伤筋动骨所以只要你熟悉19c的RAC部署21c不会给你带来额外的理解成本。CentOS 7.8这边内核版本3.10.0-1127glibc是2.17Oracle官方的安装前置条件文档里明确支持Red Hat Enterprise Linux 7系列CentOS与它在二进制层面几乎等同所以实际部署时的坑主要不在OS层面而是集中在依赖包缺失、udev绑定共享盘、用户资源限制这些老生常谈的问题上。选这个组合还有一个很现实的原因生产环境里RHEL的授权费用不低不少中小公司会拿CentOS来跑Oracle所以“CentOS Oracle RAC”的真实需求一直很旺盛。1.2 图形安装 vs 静默安装怎么选很多人第一次装RAC都喜欢用图形界面因为能看到每一步在做什么逻辑清晰心里踏实。图形安装适合教学、演示、以及服务器有可视化桌面或你能顺利转发X11窗口的场景。静默安装则是不折不扣的“生产利器”。它通过响应文件把安装参数预先写死然后用gridSetup.sh -silent或dbca -silent执行整个过程不弹窗、不依赖网络回放批量装几十套环境毫无压力。而且静默安装的响应文件本身就是一份配置清单后期做配置审计非常方便。我个人的建议是第一遍学习和排障用图形安装。第二遍起正式环境全部走静默。你两个都掌握之后才能真正说自己会装RAC。1.3 整体安装架构拆解安装一套双节点RAC 21c本质上要做四件事安装GIGrid Infrastructure负责集群件、ASM、监听器、SCAN等基础服务。配置ASM磁盘组存放OCR、Voting File以及后续数据库的数据文件。安装Oracle Database 21c软件这一步选“Software Only”不建库。用DBCA创建RAC数据库实例。整个安装过程中用户分为两个grid用户管GIoracle用户管数据库。这两个用户不能共用同一个ORACLE_HOME目录要严格隔离这是RAC部署的铁律。2. 安装前的系统级准备细节决定成败2.1 网络规划与hosts解析RAC至少需要三类地址分别是Public IP、Private IP和SCAN IP。Public走业务流量Private走Cache Fusion和心跳SCAN是客户端连接的统一入口。我这里用双节点的标准配置做示范但如果你只有一台物理机完全可以用多个虚拟网卡来模拟思路一模一样。网络规划参考如下节点主机名Public IPPrivate IP节点1ols21c1192.168.56.101192.168.101.1节点2ols21c2192.168.56.102192.168.101.2SCANscan-cluster192.168.56.105-所有节点必须能通过主机名互相解析最简单可靠的方式是直接写/etc/hosts不要在生产环境里把小命压在DNS的可用性上。hosts内容类似192.168.56.101 ols21c1.localdomain ols21c1 192.168.56.102 ols21c2.localdomain ols21c2 192.168.56.105 scan-cluster.localdomain scan-cluster需要注意的是SCAN IP不要和任何Public IP复用也不要混淆为某个节点单独拥有的IP。生产环境SCAN通常配三个IP做DNS轮询测试环境一个IP就够。2.2 用户创建、目录规划和权限模型使用OS用户和目录前先明确设计原则GI和DB必须使用不同用户且不能互相拥有对方目录的写权限。我建的是grid和oracle主组都为oinstallgrid的附加组为asmadmin、asmdba、asmoperoracle的附加组为dba、oper、asmdba。groupadd oinstall groupadd dba groupadd oper groupadd asmadmin groupadd asmdba groupadd asmoper useradd -g oinstall -G asmadmin,asmdba,asmoper grid useradd -g oinstall -G dba,oper,asmdba oracle目录规划上我习惯把BASE统一放在/u01/app下grid用户ORACLE_BASE/u01/app/gridORACLE_HOME/u01/app/21.0.0/gridoracle用户ORACLE_BASE/u01/app/oracleORACLE_HOME/u01/app/oracle/product/21.0.0/dbhome_1这么做的好处是路径明确后续看日志、做备份都不会乱。2.3 内核参数、资源限制和依赖包Linux系统参数是Oracle最苛刻的一环。我在两个节点上同步配置核心参数如下cat /etc/sysctl.conf EOF fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.sem 250 32000 100 128 kernel.shmall 2147483648 kernel.shmmax 17179869184 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 net.ipv4.conf.all.rp_filter 2 net.ipv4.conf.default.rp_filter 2 net.ipv4.ip_local_port_range 9000 65500 vm.dirty_background_ratio 3 vm.dirty_ratio 15 vm.swappiness 10 EOF sysctl -pshmmax这里如果机器内存是64G官方建议设为物理内存的一半左右不需要机械地照搬32G。你只需确保shmall和shmmax乘积算出的字节数不低于SGA需求。依赖包方面CentOS 7.8没有现成的oracle-database-preinstall-21c我就手动安装。你用yum install把这些装全基本够了。yum -y install bc binutils compat-libcap1 compat-libstdc-33 gcc gcc-c \ elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel \ libX11 libXau libXi libXtst libXrender libXrender-devel libgcc \ libstdc libstdc-devel libxcb make net-tools nfs-utils \ openmotif smartmontools sysstat unixODBC unixODBC-devel ulauncher \ xorg-x11-xauth xorg-x11-utils2.4 共享存储与ASM磁盘绑定RAC的OCR、Voting File和数据库文件都必须放在共享存储上。我测试环境用的是虚拟机的共享虚拟磁盘生产环境更多用SAN或磁盘阵列划LUN。无论哪种Linux侧都必须把磁盘绑定成固定设备名。官方推荐用ASMLib或udev规则绑定CentOS下ASMLib的兼容性有时很麻烦我直接使用udev方案。先查出盘符对应的WWN或UUID再写/etc/udev/rules.d/99-oracle-asm.rulesKERNELsd*, SUBSYSTEMblock, ENV{ID_WWN}36183a2b0abcdef1234567890, SYMLINKocr1, OWNERgrid, GROUPasmadmin, MODE0660这样重启后设备就会固定映射为/dev/ocr1、/dev/data1这类名称ASM磁盘组创建不会因为盘符漂移而挂掉。3. 图形安装完整流程与现场排障3.1 图形界面启动的三个前置条件如果你是在本地虚拟机里有桌面环境图形安装很简单直接在终端里以grid用户执行./gridSetup.sh就行。但多数情况我们是远程SSH到服务器这时候必须做两件事用X11转发或者用VNC。我的经验是X11转发比VNC轻量。第一步确认SSH服务端允许X11转发改/etc/ssh/sshd_configX11Forwarding yes第二步本地Windows安装Xming或MobaXTerm连接时开启X11。第三步执行xhost 并在grid用户环境设置DISPLAY变量。很多人在这一步卡住报Unable to open X display九成是DISPLAY没导出。export DISPLAY192.168.56.1:0.0这里的IP是本地电脑的IP端口号和Xming的监听端口对齐。3.2 gridSetup.sh图形安装逐步操作准备工作完成后使用grid用户进入解压好的Grid软件目录执行./gridSetup.sh。界面起来后第一步会让你选择配置选项这里选“Set Up Software Only”不是建集群但注意这有个坑如果你要建集群并同时创建ASM磁盘组得选“Create and Configure a Cluster”它会一路引导你填集群名、SCAN、节点列表和ASM磁盘组。我的建议是首次学习走全流程就选“Create and Configure a Cluster”生产环境如果是分开隔离安装就选Software Only。节点添加界面需要填写两个节点的Public Hostname和Private Hostname此时会校验SSH互信。如果你提前手动配置了SSH免密就在界面上选择“Use Existing SSH Configuration”否则让安装程序自动配置它会要求输入各节点的root和grid密码。这时候最容易出问题的是SSH端口不是默认22要在CLASSPATH启动参数里额外指定否则报错。ASM磁盘组创建环节我们需要规划两组一个是OCR和Voting File用的CRS冗余选Normal至少三块盘另一个是数据盘DATA。磁盘组名称不要用大写ASM内部会自动转大写但命名规范一开始就定好能省掉后续一堆麻烦。在Candidate Disks列表里勾选刚刚udev绑定的设备配好之后点Test按钮会提示“Prerequisite Checks”是否通过。root脚本执行是这个环节最让人心焦的部分。安装界面会在适当时机弹出一个窗口要求你在每个节点以root身份执行orainstRoot.sh和root.sh。我踩过一次坑root.sh在第二个节点执行时由于跑得太快导致第一个节点上的crsctl stat res -t还没来得及注册资源就把集群配起来。正确做法是严格按照界面提示的顺序先在第一个节点执行root.sh等它跑完并出现successfully configured字样再到第二个节点执行最后回界面点OK。3.3 数据库软件图形安装与DBCA建库GI装好后数据库软件安装就简单多了。使用oracle用户进入database安装目录执行./runInstaller选“Set Up Software Only”然后分别选择RAC集群安装并勾选两个节点。这里有个细节安装类型选择“Enterprise Edition”但在“Database Edition”步骤可以选择只装基础版节省空间。软件安装过程中不会让你输数据库名因为还没建库装完后以root执行root.sh再用dbca创建数据库。dbca图形界面里选“Oracle RAC database”和“Create a database”输入全局数据库名orcl在“Storage”环节务必选“Automatic Storage Management (ASM)”此时会让你以sysasm身份连接ASM实例。sysasm用户密码就是GI安装时设定的ASM管理员密码别记混。DBCA建库最后一步会提示执行脚本同样以root在对应节点执行。全部跑完后检查监听和实例状态crsctl stat res -t srvctl status database -d orcl双实例都显示online整个图形安装流程才算结束。4. 静默安装从响应文件到一键执行4.1 静默安装的准备工作静默安装并不等于不用准备系统环境前面章节的所有前置条件一个都不能少包括网络、共享存储、内核参数、用户和目录。无非是把图形界面点鼠标的动作改成了写响应文件、执行带参数的命令。开始前建议先把两个节点之间的SSH互信配置好虽然静默安装也能自动配置但提前手动配置会让你少看到很多莫名其妙的失败。配置完毕后用grid用户执行以下命令验证互信ssh ols21c2 echo hello如果返回hello说明互信正常安装程序不会再在SSH环节挂掉。4.2 grid静默安装响应文件详解进入Grid解压目录模板响应文件在response/子目录下文件名叫gridsetup.rsp。复制一份出来关键项逐个改cp response/gridsetup.rsp /home/grid/grid21c.rsp vi /home/grid/grid21c.rsp核心参数解释如下参数值说明oracle.install.optionCRS_CONFIG表示创建和配置集群ORACLE_BASE/u01/app/gridgrid用户的base目录oracle.install.asm.OSDBAasmdbaASM的DBA组oracle.install.asm.OSOPERasmoperASM的OPER组oracle.install.asm.OSASMasmadminASM的管理员组oracle.install.crs.config.gpnp.scanNamescan-clusterSCAN名称oracle.install.crs.config.gpnp.scanPort1521SCAN监听端口oracle.install.crs.config.ClusterNameols-cluster集群名称oracle.install.crs.config.gpnp.configureGNSfalse测试环境关闭GNSoracle.install.crs.config.gpnp.scanTypeSCAN使用SCANoracle.install.crs.config.clusterNodesols21c1:ols21c1-priv,ols21c2:ols21c2-priv节点列表格式为public主机名:private主机名oracle.install.crs.config.networkInterfaceListeth0:192.168.56.0:1,eth1:192.168.101.0:5网段和网络类型1为public5为privateoracle.install.asm.SYSASMPasswordOracle123ASM的sysasm密码oracle.install.asm.diskGroup.nameCRS磁盘组名oracle.install.asm.diskGroup.redundancyNORMAL冗余级别oracle.install.asm.diskGroup.disks/dev/ocr1,/dev/ocr2,/dev/ocr3ASM磁盘路径oracle.install.asm.diskGroup.diskDiscoveryString/dev/ocr*磁盘发现路径networkInterfaceList这个参数特别容易写错。它需要的是网段地址和网络类型不是IP地址本身。Public网络标1Private网络标5。你如果搞反了装完GI后还会发现crsctl stat res -t里所有资源全处于UNKNOWN或OFFLINE状态。一切就绪后执行安装命令./gridSetup.sh -silent -responseFile /home/grid/grid21c.rsp命令执行后会持续输出日志注意观察最后是否有Successfully configures the Oracle Grid Infrastructure之类的信息。但静默安装不会帮你执行root脚本你得根据屏幕提示手动运行以下命令/u01/app/21.0.0/grid/root.sh此刻我建议你在第一个节点执行root.sh时等到它跑完再执行第二个节点千万别图快同时开两个窗口跑。之前有一次为了省时间我并行执行两边的root.sh结果ocssd在两边同时启动导致集群表决盘投票异常最后只能重新初始化OCR。4.3 数据库软件静默安装数据库软件静默安装同样需要响应文件。进入database解压目录模板在response/db_install.rsp。改这几个核心项oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall ORACLE_HOME/u01/app/oracle/product/21.0.0/dbhome_1 ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPoper oracle.install.db.OSBACKUPDBA_GROUPdba oracle.install.db.OSDGDBA_GROUPdba oracle.install.db.OSKMDBA_GROUPdba oracle.install.db.OSRACDBA_GROUPdba oracle.install.db.CLUSTER_NODESols21c1,ols21c2 oracle.install.db.rac.configurationTypeRAC执行安装./runInstaller -silent -responseFile /home/oracle/db21c.rsp安装完成后同样会有root脚本提示以oracle用户执行/u01/app/oracle/product/21.0.0/dbhome_1/root.sh4.4 用DBCA静默建库建库这一步是静默安装里最繁琐的因为DBCA的响应文件模板比较长网上版本容易过时。我建议直接用命令行参数方式比填模板文件直观dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -sid orcl \ -gdbName orcl \ -rac true \ -nodelist ols21c1,ols21c2 \ -sysPassword Oracle123 \ -systemPassword Oracle123 \ -storageType ASM \ -asmSysPassword Oracle123 \ -diskGroupName DATA \ -recoveryAreaDestination NONE \ -totalMemory 2048 \ -characterSet AL32UTF8 \ -emConfiguration NONE \ -databaseType MULTIPURPOSE这里有几个容易踩的坑。第一-rac true参数必须写否则DBCA只会创建一个单实例数据库但连接处理器又是RAC模式最后服务名和实例名对不上。第二-storageType ASM是告诉DBCA把数据文件放到ASM磁盘组这里用的-diskGroupName DATA必须是GI安装时已经创建好的那个组否则报错找不到磁盘组。第三-totalMemory指整个实例可用内存单位MB我测试环境给2048生产环境根据SGA和PGA实际需求调不要贪大。执行成功后验证集群资源crsctl stat res -t srvctl status database -d orcl输出中orcl_1和orcl_2两个实例都应显示online监听器资源也处于online状态静默安装流程就算彻底完成了。5. 常见问题与实战排查5.1 图形页面打不开这类问题在远程服务器上十次有八次会遇到。建议先区分是X服务的问题还是Oracle安装程序的问题。在命令行执行xclock或简单的X程序如果能弹窗说明X转发正常问题出在Oracle的JDK版本与本地X服务的兼容性上此时要检查DISPLAY变量是否在grid或oracle用户环境里成功导出。如果X程序也弹不出来就检查SSH服务端配置、防火墙和本地XServer监听端口。有些服务器安装时最小化没有装xorg-x11-xauth也要一并补上。补充一下现场用VNC时的处理第1点里你提到的kylin安装dbeaver服务启动了怎么进入图形页面麒麟系统上的常用套路是先确认vncserver或桌面进程是否起来然后通过systemctl status查看GUI服务状态再检查端口和会话编号。Oracle这边不管什么Linux发行版核心思路是X转发链路要通界面本身隶属于安装包内部的图形库跟数据库版本关系不大。5.2 root.sh跑挂或集群资源异常root.sh是RAC安装中报错最多的地方。如果卡在CSSD相关的启动阶段大概率是私网或共享盘优先级没配对。此时先检查/etc/hosts里的私网解析是否一致再用crsctl check css查看CSS服务是否启动。另一个常见情况是第二个节点执行root.sh后集群状态里出现节点离线。解决思路很简单先验私网IP是否互通、防火墙是否放行再验ASM磁盘在两边设备的WWN是否一致。共享盘如果一边识别不到ASM磁盘组就无法正常mount第二个节点自然起不来。5.3 静默安装报错“ASM磁盘组不存在”或“磁盘发现失败”这个问题通常发生在ASM磁盘组创建阶段或DBCA建库阶段。优先排查ASM磁盘发现字符串是否匹配。ASM实例启动时会按照asm_diskstring参数去扫描设备如果发现路径是/dev/ocr1而你在安装时写的是/dev/asm-*那肯定发现不了。我处理过的最典型案例是udev设备符号链接写得没问题但权限不对grid用户没有读写权限。记住磁盘设备文件必须是grid:asmadmin权限至少0660。5.4 各错误速查现象可能原因处理办法图形界面启动中文乱码或按钮无法点击系统缺fonts或JDK字体异常安装liberation-fonts或把系统localectl设置为en_US.UTF-8INS-06006用户组或目录权限不对检查grid和oracle用户是否在对应组目录属主是否正确CRS-0184CSS未启动执行crsctl start crs检查/var/log/oracle下的cssd日志PRVF-0002节点间无法访问检查hosts、防火墙、私网连通性dbca静默建库卡住无输出内存不够或共享内存设置过小检查/dev/shm大小必要时增加/dev/shm容量5.5 我个人的习惯与最后一条建议从19c到21c我装RAC的整体套路几乎没变过先网络、后存储、再参数最后才是执行安装。图形安装适合你理清每个环节的关系静默安装适合批量交付但二者对底层系统准备的要求完全一致不要因为用了静默就觉得能跳过环境配置。老实说21c的RAC部署比当年11g/12c时代已经省心了很多ASM的自动化能力、GI的健康检查、以及DBCA的静默参数都成熟到可以闭眼用。真正让项目翻车的从来不是Oracle安装程序本身而是基础环境里那一个个不起眼的小细节hosts写错一个字符、防火墙没放行私网端口、共享盘权限少了个组、udev规则里少了一条WWN。最后再分享一个小技巧每次安装前先在两个节点上分别执行cluvfy的预检查。虽然它不能覆盖所有场景但能把80%的低级错误提前暴露出来。等你把cluvfy跑得毫无告警时后面的安装大概率会很顺。遇到问题别急着重装先看日志GI的日志在$ORACLE_HOME/cfgtoollogs和/var/log/oracle里静默安装的日志则在$ORACLE_BASE/cfgtoollogs底下按时间排序找最新的文件错误原因基本都写得很直白。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →