☰
Oracle 19c RAC图形化安装全攻略:从环境准备到DBCA建库
2026/10/6 19:20:31 网站建设 项目流程

最近好几个朋友问我,自己跟着官方文档装Oracle 19c RAC,为什么总是卡在中间某一步——不是图形化界面起不来,就是ASM看不到共享盘,要么root.sh执行失败、集群起不来,一折腾就是一整天。其实问题大多不是能力问题,而是准备阶段有几个必须注意的细节没做到位。Oracle 19c RAC图形化安装,本身不算复杂,只要你把集群架构想清楚、网络和共享存储规划对、系统参数配齐,后面就是一步步点Next的事。这篇文章我打算从零开始,把两个节点的RAC图形化安装全程拆开讲,每个界面选什么、每段脚本怎么跑、每个坑长什么样,都给你对一遍。文章以VMware虚拟化环境下的Oracle Linux 7.9为例,适合第一次接触RAC、想在实验环境一次装通的新手。

1. 开装之前先把三件事想明白:集群架构、版本选择与安装路线

1.1 RAC到底在解决什么问题

RAC的全称是Real Application Clusters,中文叫“真实应用集群”。你不需要把它想得多玄乎,本质上就是多个服务器节点装上Oracle数据库软件,各自运行一个实例,但共享同一套数据文件,对外像是一个数据库。当其中一个节点挂掉,另一个节点能无缝接管,应用基本无感。同时你还可以通过增加节点来扩展处理能力,而不是换一台更大的服务器。

19c这个版本是Oracle 12c系列之后的一个长期支持版本,稳定性、性能、多租户、自动化运维方面都相当成熟,也是目前很多企业生产环境的主流选择。RAC在19c里有一大变化:不再区分“集群件”和“ASM软件”,它们全部整合在Grid Infrastructure(简称GI)一套软件里。你装好GI,就等于装好了Clusterware和ASM两个核心组件。这一点一定先记住,后面装软件的时候就不会犯迷糊。

1.2 这次要装的软件到底有哪些

一套标准的Oracle 19c RAC,需要装两个软件包,顺序不能反:

  • 第一个是Grid Infrastructure,运行在grid用户下,负责集群资源管理、节点心跳、VIP漂移、SCAN监听,以及ASM存储管理。没有它,数据库根本跑不起来。
  • 第二个是Oracle Database软件,运行在oracle用户下,数据库实例本身靠它启动。它可以只装软件不建库,之后再通过DBCA图形化工具创建RAC数据库。

这两个软件都必须在每个节点上安装,也就是说你两个节点都要有grid用户和oracle用户,软件目录各放一份。后面你会反复看到这个双用户结构,这是理解RAC运维的基础。

1.3 保姆级路线图:五个阶段一次看清楚

我把整个安装过程拆成五个阶段,整个教程就是按这条线走的:

  1. 网络、主机名、共享存储规划——这是万事之基,错一步后面全崩。
  2. 系统层准备——内核参数、用户组、依赖包、udev共享盘规则。
  3. 安装Grid Infrastructure——装完集群就起来了,ASM也能用了。
  4. 安装Oracle数据库软件——纯软件安装,两个节点一起装。
  5. 用DBCA创建RAC数据库——数据库实例在两边启动起来。

这五步走完,你的RAC才是真正能跑业务的RAC。很多教程只讲到GI装完就结束,那只能算集群装好了,数据库其实还没影呢。

2. 网络、主机与共享存储规划:这一步错了,后面全是坑

2.1 三套网段:Public、Private、VIP/SCAN怎么分

RAC对网络的要求是整个安装里最容易被忽视、出错后也最难排查的部分。一个标准两节点RAC,至少需要三类IP:

  • Public IP:每个节点对外提供服务的物理IP,客户端访问用的就是它。要求两个节点在同一网段。
  • Private IP:集群内部节点间通信和心跳用的物理IP,要求两个节点间必须连通,且绝对不能和Public在同一个网段。心跳数据走独立网段,是为了避免对外网络拥堵时集群误判节点死亡。
  • Virtual IP(VIP):每个节点有一个和Public同网段的虚拟IP,由集群管理。节点挂了,VIP漂移到另一个节点,应用连接还能继续走。
  • SCAN IP:整个集群的“入口”。客户端不直接连某个节点的IP,而是连SCAN域名,由集群自动把连接分发到健康的节点上。

我常用的一套简单规划如下,内存里完全够用:

主机名Public网段192.168.1.0/24Private网段10.0.0.0/24VIP网段192.168.1.0/24
rac1192.168.1.10110.0.0.1192.168.1.111
rac2192.168.1.10210.0.0.2192.168.1.112
rac-scan192.168.1.121——

这里要重点说一个常见误区——很多人以为VIP必须和Public不同网段,实际上VIP必须和Public在同一个网段,因为VIP需要能被路由到客户端网段,而且要能快速漂移。真正的隔离要求是Private不能和Public同一个网段。Private网段你可以随意用,只要两个节点内部互通即可,我习惯用10.0.0.0/24。

2.2 主机名与hosts解析:细节别偷懒

Oracle要求所有节点的hostname保持一致,不能一会儿短名一会儿FQDN。hosts文件建议在每台机器都把所有地址都写全,我一般在每台节点的/etc/hosts里统一写:

192.168.1.101 rac1 192.168.1.102 rac2 192.168.1.111 rac1-vip 192.168.1.112 rac2-vip 192.168.1.121 rac-scan 10.0.0.1 rac1-priv 10.0.0.2 rac2-priv

注意几个细节:hostname里不要带下划线,不能有空格;rac-scan尽量不要写在后面几行,可以放在最前;SCAN IP在生产环境最好走DNS做三个地址轮询,但实验环境hosts文件解析一个IP完全够用。还有一点,两个节点的/etc/hosts内容完全一样,避免因为解析不同导致节点间互相找不到。

2.3 共享磁盘规划:OCR、Voting、DATA、FRA到底怎么分

共享存储是所有节点都能看到、都只能通过ASM访问的磁盘。ASM磁盘组按用途可以分成三类:

  • OCR和Voting Disk:集群的“命根子”。OCR存集群和数据库的配置信息,Voting Disk用于集群分裂时的仲裁。Oracle 19c安装GI时,会要求你至少创建一个ASM磁盘组来存放OCR和Voting Disk,命名一般叫OCRVOTE。这个组建议至少两块盘做Normal冗余(需要三块盘才能满足Normal,如果只有两块盘也可以External只放一块?这里注意:如果外部已有存储冗余,可以选External只用一块盘;如果本机虚拟磁盘没有冗余,建议至少三块小盘做Normal)。实验环境用一块20G~30G的External冗余盘也行,但要知道这是单点。
  • DATA磁盘组:存数据库的数据文件、控制文件、redo日志,建议容量给足,比如50G以上。
  • FRA磁盘组:快速恢复区,存归档日志、RMAN备份,和数据隔离,建议30G~50G。

如果你用的是一套虚拟化环境,总共给三块共享盘就够了:一块20G给OCRVOTE,一块50G给DATA,一块30G给FRA。磁盘大小不齐没关系,ASM是按磁盘组管理的。关键是每块盘在每台节点上看到的设备名要一致,例如rac1的sdb是什么,rac2的sdb也必须是什么。

2.4 虚拟化环境怎么模拟共享盘

这个坑我踩过很多次,所以单独拿出来说。在VMware Workstation里,共享盘不是“挂上同一个ISO”那种概念,你需要做以下操作:

  1. 在两台虚拟机都关机状态下,编辑虚拟机设置。
  2. 分别给两台VM添加一块新磁盘,磁盘类型选SCSI。
  3. 创建磁盘时,选择“使用现有虚拟磁盘”,指向同一个vmdk文件。
  4. 关键一步:在NVRAM(也就是vmx配置文件)或者界面的高级选项里,找到“独立”模式,勾选“多写入器”。
  5. 如果界面没找到多写入器选项,需要手动编辑vmx文件,找到对应磁盘的描述行,加一行disk.Enabled = "TRUE"和disk.Sharing = "true"。

这一步没做对,最常见的问题是ASM在Discovery阶段看不到盘,或者偶尔能发现但一写数据就报错、voting disk仲裁失败。Oracle在虚拟化环境跑RAC本来就对共享盘要求苛刻,多写入器这个开关必须打开,要牢记。

3. 系统层准备清单:内核参数、用户、依赖包、udev,一项项过

3.1 操作系统版本与依赖包检查

Oracle官方19c支持的Linux发行版不少,但我给新手的建议是直接用Oracle Linux 7.9,理由很简单:官方支持列表里它排在前面,依赖包基本都能在默认源里找到,装起来省心。Red Hat Enterprise Linux 7.9也可以,区别不大。

系统装好后,先把以下依赖包装上。我在实验环境里直接用yum一次性装齐,下面是常用清单:

yum install -y bc binutils compat-libcap1 compat-libstdc++-33 \ gcc gcc-c++ 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 openssh-clients openssh-server \ python3 quota readline readline-devel smartmontools \ sysstat unixODBC unixODBC-devel xorg-x11-utils xorg-x11-xauth

注意python3这个包,19c的Grid检查时会依赖Python 3环境,少了它会在前置检查阶段报错。如果你用的源装不了openmotif,不影响核心安装,但保险起见还是尽量装上。

3.2 内核参数与用户资源限制

把下面这些参数写到/etc/sysctl.conf里,然后执行sysctl -p生效。这组参数是Oracle官方给出的标准值,适用于绝大多数环境,不需要自己改:

fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.sem = 250 32000 100 128 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 kernel.shmmni = 4096 kernel.panic_on_oops = 1 kernel.pid_max = 4194304 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.core.rmem_max = 4194304 net.core.rmem_default = 262144 net.core.wmem_max = 1048576 net.core.wmem_default = 262144 net.ipv4.ip_local_port_range = 9000 65500

这些参数总结起来就是:放宽文件句柄限制、扩大共享内存上限、调整端口范围。RAC节点间通信很频繁,如果端口范围太窄,容易在高并发时出现“端口耗尽”导致节点被误判为故障,这也解释了为什么ip_local_port_range要设置成9000到65500。

接着修改/etc/security/limits.conf,给grid和oracle加同一组限制:

grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 grid soft stack 10240 grid hard stack 32768 grid hard memlock 3145728 grid soft memlock 3145728 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 oracle hard memlock 3145728 oracle soft memlock 3145728

其中memlock对应的就是内存锁,安装时如果这里设置不够,Oracle会提示“unable to lock memory”或者内存分配相关的错误。3145728KB换算过来是3GB,如果你的节点内存超过8GB,建议直接把它调大。

3.3 创建用户、目录与权限

RAC的安装离不开两套用户,注意主组必须是oinstall。我习惯把命令写成脚本放在两个节点分别执行,确保两边完全一致:

groupadd oinstall groupadd dba groupadd oper groupadd backupdba groupadd dgdba groupadd kmdba groupadd asmdba groupadd asmoper groupadd asmadmin groupadd racdba useradd -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmdba oracle useradd -g oinstall -G oinstall,asmadmin,asmdba,asmoper grid mkdir -p /u01/app/19.0.0/grid mkdir -p /u01/app/grid mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1 mkdir -p /u01/app/oracle chown -R grid:oinstall /u01/app/grid chown -R grid:oinstall /u01/app/19.0.0 chown -R oracle:oinstall /u01/app/oracle

这里有一个细节容易被忽略:grid用户的附加组里不要加dba。虽然加了有时也能装,但不符合官方最佳实践,而且后续做ASM权限分离实验时容易出现权限混乱。oracle用户则必须加入asmdba,因为它要读写ASM磁盘组里的数据库文件。

3.4 关闭防火墙与SELinux,配置时间同步

这一步很多人会忘。RAC节点间的通信端口非常多,集群件要监听、要互相探测,防火墙开着大概率会拦截心跳,导致节点反复被踢出集群。实验环境我建议直接关闭防火墙并禁用:

systemctl stop firewalld systemctl disable firewalld

SELinux我建议设成permissive或者disabled。Oracle官方文档允许你开着SELinux运行,但必须配置正确的布尔值,对新手来说那又是另一个坑。与其冒着风险配置,不如直接把它设为permissive,安装完成后也可以再评估是否需要恢复enforcing。

时间同步方面,Oracle集群对节点间时间差很敏感,默认要求节点间时钟偏差不能超过几秒。如果你的环境没有现成的NTP服务器,最好就是让GI内置的CTSS(集群时间同步服务)来管理,前提是系统里没有运行chronyd和ntpd。检查一下,如果这两个服务在运行,先停掉并禁用:

systemctl stop chronyd systemctl disable chronyd systemctl stop ntpd systemctl disable ntpd

3.5 共享盘udev规则与ASM设备权限

在Linux下,ASM不会直接去找/dev/sdb,它按照你指定的Discovery Path去扫描。为了让ASM稳定识别共享盘,我习惯用udev规则把共享盘固定为/dev/asm*设备,并赋予grid:asmadmin正确权限。

先在两个节点都看一下磁盘编号是否一致:

ls -l /dev/sdb /dev/sdc /dev/sdd

如果确实对应如下:sdb是OCR/Voting盘,sdc是DATA盘,sdd是FRA盘,那么创建/etc/udev/rules.d/99-oracle-asm.rules,内容如下:

KERNEL=="sdb", OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sdc", OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sdd", OWNER="grid", GROUP="asmadmin", MODE="0660"

然后重新加载规则:

udevadm control --reload-rules udevadm trigger

最后确认一下设备权限已经变成grid:asmadmin:

ls -l /dev/sdb /dev/sdc /dev/sdd

提示:用设备名直接匹配udev规则在实验环境没问题,但生产环境强烈建议使用/dev/disk/by-path或者/dev/disk/by-id等方式,避免系统重启后设备名飘移导致ASM起不来。

到这里,你两个节点的基础环境已经搭好,可以进入正式的安装阶段了。

4. Grid Infrastructure图形化安装:每个界面选什么,我给你对一遍

4.1 启动gridSetup.sh之前,还有两件小事

第一,grid用户的.bash_profile建议提前配好环境变量,这样后续执行asmca、asmcmd都很方便:

export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/19.0.0/grid export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib

第二,把Grid安装介质解压到/u01/app/19.0.0/grid。注意介质zip解压后的目录结构应该就是你想要的grid_home,里面直接有gridSetup.sh。如果解压出现多一层目录,把内容移动一下,确保路径是/u01/app/19.0.0/grid/gridSetup.sh。

然后,你需要一个图形化窗口。我用的方案是Windows上用Xmanager或者MobaXterm,打开X server后通过SSH登录Linux,登录后执行:

export DISPLAY=你的Windows机器IP:0.0

如果是直接用虚拟机本地图形界面,则不需要DISPLAY。先在第一个节点以grid用户执行:

cd /u01/app/19.0.0/grid ./gridSetup.sh

4.2 逐个界面过一遍:从节点配置到创建ASM磁盘组

Configuration Option界面:选择“Set up a new cluster”(为新集群配置Grid Infrastructure),不要选Upgrade,也不要选Standalone Server。

Cluster Configuration界面:集群名称填rac-cluster,SCAN Name填rac-scan,SCAN Port保持1521。如果你没有使用DNS,这里可能会提示无法解析SCAN,不要勾选GNS,确认hosts文件里SCAN解析存在即可。页面下方可能会有一个“Configure Grid Infrastructure Management Repository”选项,实验环境建议取消勾选,否则它会要求你多分一块磁盘给GIMR用。

Cluster Node Information界面:点击Add,把rac1和rac2加进去,操作系统类型保持Linux。这个界面会让你配置SSH互信,如果你前面手动配好了root和grid的双向互信,这里填入密码或测试时就很顺畅。我记得OUI会在这里做一次SSH Connectivity测试,如果提示失败,多半是root密码不对或SSH端口自定义了。

Network Interface界面:这一步非常重要。OUI会自动检测节点的网卡,并显示IP段。你需要确认:

  • 192.168.1.0/24的网卡(比如eth0)用途选Public,也就是对外提供服务。
  • 10.0.0.0/24的网卡(比如eth1)用途选Private,也就是ASM和私有互连(ASM & Private)。 如果哪块网卡被标成了“Do Not Use”,或者两个网卡的Public/Private分配反了,在这里立刻改过来,否则装到后面集群资源会全部异常。

Storage Option界面:选择“Grid Infrastructure Management Repository”不讨论后,主要选存储类型。如果你不想用ASMFD,选择“Configure ASM using block devices”,然后在Disk Discovery Path里填/dev/sd*或/dev/asm*。我一般填/dev/sd*再点击“Populate Disk List”,看能否扫描到三块盘。如果什么都看不到,多半是udev规则没加载,或者共享盘没有在VM层面做多写入器。

ASM Disk Group Creation界面:这里一次性把磁盘组建好。点Create,创建OCRVOTE磁盘组我习惯选External冗余,只勾选第一块20G的盘;再Create一个DATA磁盘组,External冗余,勾选第二块50G的盘;接着Create一个FRA磁盘组,External冗余,勾选第三块30G的盘。磁盘组的ASM兼容性和数据库兼容性保持默认即可,不用改。

ASM Password界面:设置ASM的SYS和ASMSNMP密码。注意Oracle的ASM密码策略很严格,必须至少8位,建议包含大小写字母和数字。密码忘记会很痛苦,两个字:记好。

Operating System Groups界面:你前面把组都建好了,这里直接对照着选:OSASM选asmadmin,OSAPI选asmdba,OSOPER选asmoper,OSDBA选dba,OSBACKUPDBA选backupdba,OSKMDBA选kmdba,OSRACDBA选racdba。如果界面里找不到某些组,说明你创建组的步骤漏了。

Installation Location界面:Oracle Base自动填/u01/app/grid,Software Location自动填/u01/app/19.0.0/grid,保持默认。

Prerequisite Checks界面:OUI会等一会儿做检查。最常见的问题是缺rpm包、内核参数不匹配、内存或swap不足。如果检查项里有红色叉子,先点“Fix & Check Again”尝试自动修复,修不了就切到root用户手动补齐。只要不是硬性错误,有时候可以直接“Ignore All”继续,但我不建议新手这么干,还是把红色项清完再走。

Summary界面:确认集群名、节点列表、磁盘组信息没错,保存一份响应文件,点Install开始正式安装。

4.3 root.sh执行:最容易卡住的一步

安装过程会拷贝文件到两个节点,然后弹出一个“Execute Configuration Scripts”界面,要求你用root用户在每台节点依次执行脚本。你需要在rac1和rac2上分别执行:

/u01/app/19.0.0/grid/root.sh

root.sh跑的时间比较长,中间会问两个问题,一般直接回车接受默认值。第一个问题是Do you wish to continue? (y/n),实际很多时候不会问;第二个可能会问是否安装cvuqdisk,如果rpm包在/u01/app/19.0.0/grid/cv/rpm里,就先手动装一下会更稳:

cd /u01/app/19.0.0/grid/cv/rpm rpm -ivh cvuqdisk-*.rpm

两个节点的root.sh都必须执行成功,然后回到OUI界面点“OK”。之后它会自动启动集群资源,整个过程大概需要几分钟。看到集群资源全部online,再点Close关闭安装界面。

这里我要说一句经验:很多人执行root.sh时,第二个节点经常因为第一个节点还没执行完就抢着执行,导致集群资源冲突。稳妥做法是先在第一个节点跑完,确认crsctl stat res -t能看到资源,再跑到第二个节点。

4.4 用ASMCA确认磁盘组是否正确

装完GI后,用grid用户执行asmca,打开图形化工具看看三个磁盘组的状态。正常你会看到OCRVOTE、DATA、FRA三个组,状态都是MOUNTED,使用率也都是0%。如果某个组是DISMOUNTED,右键执行mount即可。ASMCA里还能看到ASM实例、监听器、磁盘路径等信息,这个工具后续管理磁盘组也经常用,建议你多用用。

5. RAC数据库软件安装与DBCA建库:从runInstaller到orcl库创建完成

5.1 安装数据库软件:一次搞定两个节点

数据库软件安装比GI简单得多。先把数据库介质zip解压到/u01/app/oracle/product/19.0.0/dbhome_1,然后切到oracle用户,确保DISPLAY正确,执行:

cd /u01/app/oracle/product/19.0.0/dbhome_1 ./runInstaller

第一个界面选择安装选项时,有三种情况:单实例建库、RAC建库、仅软件。我建议选“Set Up Software Only”(仅安装数据库软件),后续再用DBCA单独建库,一是流程更短,二是不容易出错。

接下来的界面选择“Oracle Real Application Clusters database installation”,然后选择集群节点。弹出节点选择列表时,把rac1和rac2都勾上。Oracle Home也就是软件安装位置保持默认/u01/app/oracle/product/19.0.0/dbhome_1。

在操作系统组配置界面,按官方默认选:OSDBA选dba,OSOPER选oper,OSBACKUPDBA选backupdba,OSDGDBA选dgdba,OSKMDBA选kmdba,OSRACDBA选racdba。一路Next,最后在“Execute Configuration Scripts”界面,需要你分别在两个节点以root执行:

/u01/app/oracle/product/19.0.0/dbhome_1/root.sh

这个root.sh很短,跑完基本没输出,点OK关闭。数据库软件安装就算完成了。是不是感觉比GI顺畅很多?对,GI是重头戏,DB软件安装主要是等待。

5.2 DBCA创建集群数据库:选对模式少走弯路

软件装好后,以oracle用户执行dbca:

dbca

界面选“Create Database”,然后选择“Advanced Mode”(高级模式)。注意不要选“Create with default configuration”——那是单实例默认配置,我们要的是RAC。

在“Database Configuration Type”界面,选择“Real Application Clusters”,节点列表默认全选。接着选模板,我用“General Purpose or Transaction Processing”就够。数据库标识填写全局数据库名orcl,SID前缀自动带出来也是orcl。

存储部分选择ASM,磁盘组选DATA,这样数据文件、控制文件、redo日志都会放到DATA组。接着勾选“Fast Recovery”,恢复区位置选FRA磁盘组,大小可以用默认。这一步顺便把归档模式也开了,RAC生产环境一般都要求归档,实验环境开了也没坏处。

字符集建议选AL32UTF8,避免后续客户端乱码。数据库密码设置SYS和SYSTEM的密码,至少8位,建议大小写加数字混合。内存管理方面,如果你虚拟机内存只有8G,建议把SGA内存调成2G~4G,不然创建过程可能因为内存不足卡住。其他参数全部保持默认。

在Summary界面,可以先保存一个响应脚本再点Create。DBCA会在两个节点上同时执行建库脚本,整个创建过程大约十几分钟。你会看到它创建控制文件、数据字典、启动实例等日志,等走完,RAC数据库就活了。

5.3 建库时的几个参数选择

DBCA整个过程里,有几个参数我想单独拎出来提醒:

  • processes参数如果模板给了默认值500,在实验环境够用。
  • db_recovery_file_dest_size如果磁盘组FRA太小,建库可能会报空间不足,建议FRA给到30G以上。
  • remote_login_passwordfile在RAC中会自动设置为EXCLUSIVE,不用动。
  • 如果DBCA在ASM密码验证那一步报错,回到ASMCA确认ASMSNMP密码是否正确,很多时候不是存储问题,就是密码记错了。

6. 安装完成之后的事:集群验证与新手最常见翻车点复盘

6.1 几条命令确认集群和数据库真的活着

安装完成后,别急着高兴,先用命令验证一遍。切到grid用户执行:

crsctl check cluster -all crsctl status resource -t

正常你会看到所有资源都是ONLINE,包括ora.oc4j、ora.scan1、ora.rac1.vip、ora.rac2.vip、ora.asm、ora.orcl.db等。如果哪个资源显示OFFLINE,先看状态再启动:crsctl start resource 资源名。特别要关注ora.orcl.db,它代表数据库本身在两个节点都启动了。

再用oracle用户执行:

srvctl status database -d orcl sqlplus / as sysdba

然后确认集群数据库模式:

select inst_id, instance_name, status from gv$instance;

正常会返回两个实例,一个rac1上的orcl1,一个rac2上的orcl2。再查一下参数:

show parameter cluster_database;

返回值必须是TRUE。如果返回FALSE,说明建库时没有选RAC模式,那这个问题要回到DBCA重新处理。

6.2 新手最容易翻车的10个场景

我在帮朋友排查RAC安装问题时,遇到过的经典翻车场景基本就这些:

  1. 图形化界面起不来:DISPLAY没设对,或者Android不在同一网络段。用MobaXterm最省心,自带X server。
  2. ASM发现不了盘:udev没生效,或VMware共享盘没开多写入器。检查顺序从ls -l /dev/sd*到udevadm info --query=all /dev/sdb。
  3. root.sh卡住:多半是时间不同步或节点间SSH有问题。先执行date对比两台机器时间。
  4. SCAN连不上:hosts文件里SCAN解析不对,或者SCAN监听没有起来。检查crsctl stat res -t | grep scan。
  5. cvuqdisk缺失:安装前先装/u01/app/19.0.0/grid/cv/rpm/cvuqdisk-*.rpm,注意两个节点都要装。
  6. 检查不通过卡在物理内存:虚拟机内存至少8G,swap至少8G。
  7. 执行root.sh后集群资源起不来:查看/u01/app/19.0.0/grid/log/rac1/alertrac1.log或者$ORACLE_BASE/diag/crs/下的日志。
  8. 安装过程中明明配置了OCR盘,却在root.sh后报voting file not found:共享盘没被第二个节点识别,回到共享盘配置。
  9. DBCA创建时提示ASM实例连接失败:grid用户下的ASM没起来,执行crsctl stat res -t | grep asm确认。
  10. 网络接口用途选错:Private和Public同一网段,集群心跳异常。只能回到安装前重新梳理IP规划。

6.3 无论如何都要做的虚拟机快照

最后分享一个我每次搭RAC实验环境都会做的操作:在系统基本准备完成、即将执行gridSetup.sh之前,给两台虚拟机各拍一张快照。RAC安装有个特点,越往后出问题,回滚成本越高。如果你装在GI那一步把集群搞坏了,想清理干净极其麻烦,涉及crs卸载、磁盘清理、inventory清理一堆事。快照一拍,装坏了直接revert,十分钟回到起点,重新来一遍也就一个多小时的事。我的经验是,快照永远不嫌多,特别是在你还不熟悉RAC的时候,一步一快照都是值得的。等这套流程走顺了,再考虑不靠快照直接一遍装通,那时候你心里才对“零失败”这三个字真正有底。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询