Oracle 21C RAC 三节点集群保姆级安装教程(附VMware共享磁盘配置方法)

Oracle 21C RAC 三节点集群保姆级安装教程(附VMware共享磁盘配置方法)

 
目录
收起
前言
注意事项
一、前期准备
1.1 工具和软件
1.2 网络规划
二、创建虚拟服务器
2.1 新建虚拟机
2.2 安装操作系统
2.3 关闭防火墙
2.4 创建用户和目录
2.5 调整SWAP
2.6 克隆虚拟机
三、创建共享磁盘
3.1 空间规划
3.2 命令行创建虚拟磁盘
3.3 修改虚拟机配置文件
3.4 开启时间同步
3.5 小插曲
3.6 修改HOSTNAME和IP地址
3.7 使用UDEV绑定ASM磁盘
四、安装集群软件
4.1 配置本地YUM源
4.2 下载并上传安装包
4.3 修改环境变量
4.4 解压安装包
4.5 集群安装流程
4.6 运行root脚本
4.7 检查集群资源
五、安装数据库软件
5.1 解压安装包
5.2 数据库安装流程
六、创建数据库
6.1 新建磁盘组
6.2 DBCA建库
七、环境验证和数据库登录
7.1 查看集群资源
7.2 登录数据库
7.3 检查监听状态
八、RAC集群的启停
8.1 集群的停止和虚拟机关机
8.2 集群的启动
九、后记

前言

所有Oracle DBA的第一篇文章,都是安装教程。

——鲁迅

Oracle数据库作为全球市场占用率最高,商用最完善的数据库,一直对运维人员有着较高的门槛,很多初学者在学习Oracle数据库时,都被其堪称繁琐的安装流程劝退了,今天我们以最新版Oracle数据库为例,搭建一套三节点RAC集群,详细地演示一下安装过程,为初学者做个参考。

注意事项

  1. 尽管本文自称“保姆级”教程,但这是围绕数据库操作的形容词,仍然需要读者具备基本的操作系统知识,尤其是基本的Linux命令;
  2. 如无特殊注明,本文所有代码块中的命令,都是在Windows或者Linux系统的Terminal(终端)中执行的,在Windows上,PowerShell和命令提示符也可以视作终端,只是语法不同;
  3. Linux命令执行之前记得看清楚是在哪个用户下(root、grid和oracle)。

 

一、前期准备

1.1 工具和软件

 

类型名称版本
物理机OS Windows10 21H2 19044.1826
虚拟机软件 VMware Workstation Pro 16.2.3 build-19376536
虚拟机OS Red Hat Enterprise Linux 8.5 x86-64
集群软件 Oracle Database 21c Grid Infrastructure 21.3
数据库软件 Oracle Database 21c 21.3

 

1.2 网络规划

 

主机名Public IPPrivate IPVIPSCAN-IP
eita1 192.168.72.101 168.168.168.101 192.168.72.201 192.168.72.100
eita2 192.168.72.102 168.168.168.102 192.168.72.202 192.168.72.100
eita3 192.168.72.103 168.168.168.103 192.168.72.203 192.168.72.100
网卡模式 仅主机模式 NAT模式 无需网卡 无需网卡

 

HOSTS文件书写示例

vi /etc/hosts
192.168.72.101     eita1
192.168.72.102     eita2
192.168.72.103     eita3
168.168.168.101    eita1-priv
168.168.168.102    eita2-priv
168.168.168.103    eita3-priv
192.168.72.201     eita1-vip
192.168.72.202     eita2-vip
192.168.72.203     eita3-vip
192.168.72.100     eita-scan

二、创建虚拟服务器

2.1 新建虚拟机

  • 打开VMware Workstation Pro 16,新建虚拟机,选择典型模式;
VMware Workstation Pro 16 新建虚拟机界面
  • 选择“稍后安装操作系统”
  • 在客户机操作系统类型里选择“Red Hat Enterprise Linux 8 64位”
  • 输入虚拟机存储路径和名称
  • 新增磁盘,此处新增磁盘将作为'/'根目录分区使用,因为后面会将Oracle Home单独挂载,所以无需太大,我这里分配了50GB,并选择了“将虚拟磁盘存储为单个文件”,寻求最佳性能;
  • 基本硬件配置完成,接下来点击自定义硬件
  • 在自定义硬件中,分配以下资源:

内存:8192M

注:Oracle自12C开始,将单节点最低推荐内存设置为8GB,8GB以下也能安装,但是会出现警告提示;

CPU:1个×2核

可以根据自己的物理机CPU来分配,核心多就多分配点,虚拟化引擎建议勾选;

CD/DVD光驱选项里,添加操作系统镜像

主要的来了,网络适配器选项里,将原有网卡1更改为“仅主机模式”,然后再新增一张NAT模式的网卡2;

当然,你直接添加一张“仅主机模式”的网卡也可以,但是我习惯把Public网卡设置为网卡1,这样后期维护的时候不容易混淆,纯属个人习惯。

然后关闭自定义硬件界面,点击完成

  • 然后左侧虚拟机库里会出现刚才新建的虚拟机,此时先不要开启,点击“编辑虚拟机设置”,添加一个新磁盘,作为Oracle Home使用;

(你问我为什么刚才自定义硬件的时候不添加,因为自定义硬件时没有添加硬盘的选项,必须关闭后再点击编辑设置才会出现,我也不知道为什么,垃圾VMware)

磁盘类型建议选择SCSI或者NVMe(如果虚拟机存储路径在NVMe SSD上的话会出现NVMe选项,否则无脑选SCSI)

选择创建新磁盘,大小分配60GB,仍然选择存储为单个文件,不建议勾选“立即分配所有空间”;

选择磁盘存储路径

  • 最后完整的配置是这样的,总共修改了红框中的这几个选项,其他的选项随意配置。别忘记点击“确定”保存修改。
最终完整配置

2.2 安装操作系统

  • 开启刚才新建的虚拟机,进入安装操作系统界面,上下键切换到第一个选项,按回车
  • 选择安装语言,可以在左侧下拉到最后选择中文,但因为一些众所周知的原因,我建议选择英语进行安装;
  • 点击Continue进入配置界面
  • 这里需要注意,键盘务必选择英语键盘(如果你和我一样选择英语进行安装,默认就是英语键盘,不要做任何修改);
  • 安装路径(Installation Destination)选择第一个硬盘(50GB),然后点击左上角'done'
  • 语言支持(Language Support)务必勾选英语,如果需要中文的话可以在左侧下拉找到中文,同时勾选;
  • 时区根据实际所在的地区选择,中国大陆地区选择亚洲/上海,选择好以后顺便将时间调整正确(在生产环境中,时区和时间是极其重要的参数,勾选错误可能导致业务端产生不可挽回的后果);
  • 接下来又到了重中之重,在软件选择(Software Selection)中,强烈建议非高玩选择Server with GUI,并在右侧附加选项里,勾选Performance Tools、Legacy UNIX Compatibility、Development Tools、Graphical Administration Tools和System Tools,尤其是Legacy UNIX Compatibility、Development Tools这两项,可以让你在后面安装Oracle时省事很多;
  • 然后在网络&主机名(Network&Hostname)中,配置好HOSTNAME,并点击apply,网卡及IP地址暂不配置,因为后面要用到克隆,配置IP以后再克隆反而不方便;
  • 最后配置root密码,配置完成后点击左上角done返回
  • 最终配置概要如下,点击Begin Installation开始安装;
最终概要
开始安装操作系统
  • 进度条滚完后,会提示你重启操作系统,然后会出现一个License协议,点击accepted接受,然后Finish Configuration
  • 至此,操作系统安装完成,点击Next,最后会让你创建一个普通用户,随便创建一个就好;

 

2.3 关闭防火墙

以root用户登录,点击左上角Applications,打开Terminal

Terminal(终端)

依次执行以下命令,停止并关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

在下文中,所有Linux命令行操作都在Terminal(终端)中执行,不再另行解释。

2.4 创建用户和目录

以下操作均在root用户下执行

  • 创建Oracle相关用户和属组
#创建属组
groupadd oinstall
groupadd asmadmin
groupadd asmdba
groupadd asmoper
groupadd dba
groupadd oper

#创建用户(指定UID)
useradd -u 5001 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
useradd -u 5002 -g oinstall -G dba,asmdba,oper oracle

#修改用户密码(牢记)
passwd grid
passwd oracle
  • 创建目录

对后添加的第二块容量为60GB的硬盘进行格式化操作

ll /dev/nvme*

可以看到磁盘名,其中nvme0n2就是我们需要格式化的硬盘,

如果在前期添加硬盘时选择了SCSI格式,此时会有两种情况:

① 所有虚拟硬盘均存储在非NVMe硬盘上,那么会出现sda和sdb两个硬盘,其中sda已经被分区,出现sda1、sda2等盘符,而sdb无任何分区,那么在接下来的操作中将nvme0n2替换为sdb即可;

②新建虚拟机时的硬盘存储在NVMe硬盘上,后添加的硬盘选择了SCSI格式,那么会出现nvme*和sda两种盘符,在接下来的操作中将nvme0n2替换为sda即可;

 

使用fdisk命令创建分区

fdisk /dev/nvme0n2

此时,依次输入

n 回车

p 回车

1 回车

直到出现first sector时连按两次回车

最后输入 w 回车,保存修改

新建分区

创建文件系统,我这里选用了xfs

mkfs -t xfs /dev/nvme0n2p1

创建u01目录,并将nvme0n2p1挂载至u01

mkdir /u01
mount /dev/nvme0n2p1 /u01

vi /etc/fstab
添加以下信息并保存
/dev/nvme0n2p1  /u01   xfs   defaults   0 0

然后使用df -h命令确认

创建安装目录

#创建oracle base目录
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle

#创建oracle home目录
mkdir -p /u01/app/product/21.3.0/grid
mkdir -p /u01/app/product/21.3.0/db

#修改目录权限
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chown -R oracle:oinstall /u01/app/product/21.3.0/db
chmod -R 775 /u01

写入HOSTS文件

vi /etc/hosts

新增以下内容
192.168.72.101     eita1
192.168.72.102     eita2
192.168.72.103     eita3
168.168.168.101    eita1-priv
168.168.168.102    eita2-priv
168.168.168.103    eita3-priv
192.168.72.201     eita1-vip
192.168.72.202     eita2-vip
192.168.72.203     eita3-vip
192.168.72.100     eita-scan

2.5 调整SWAP

以下操作均在root用户下执行

free -h

查看当前内存信息和swap信息,发现swap空间只有5GB,我们需要扩展到8GB

依次执行以下命令,创建swap分区并挂载

dd if=/dev/zero of=/swapfile bs=1M count=3072
mkswap /swapfile
swapon /swapfile

确认扩容结果,发现已经达到8GB

2.6 克隆虚拟机

将前文准备好的虚拟机环境,使用VMware自带的克隆功能,克隆两台。

  • 关闭虚拟机,然后右键单击虚拟机,选择管理→克隆
  • 弹出克隆向导,按下列图示依次点击下一页
注意此处一定要选择完整克隆
选择新虚拟机保存位置并命名
稍作等待,即可克隆成功

重复上述步骤,克隆出第三台服务器,克隆完成后在左侧列表中可以看到全部虚拟机

总共三台虚拟机服务器

 

三、创建共享磁盘

以下操作需要关闭所有虚拟机,并彻底退出VMware WorkStation Pro软件以后再执行

3.1 空间规划

因为Oracle RAC集群强制使用ASM,所以我们要新增若干硬盘,并让三台服务器共同识别,硬盘规划如下:

 

DiskGroup单盘容量数量冗余方式最终可用
DATA 50GB 2 External 100GB
ARCH 10GB 1 External 20GB
OCR 1GB 3 Normal 2GB

 

其中DATA是数据磁盘组,ARCH是归档磁盘组,OCR是Vote磁盘组。由于物理机硬盘容量限制,我这里对DATA和ARCH磁盘组采用了外部(External,单副本)方式,除此之外还有:

Normal冗余(双副本,最少需要2个Fail Group,可用空间为总容量/2);
High冗余(三副本,最少需要3个Fail Group,可用空间为总容量/3);
Fail Group是ASM的一个概念,它指的是数据副本存放的位置,每个Fail Group都有一份完整的数据副本,只要还有一个Fail Group是可以工作的,数据就不会丢失。一般情况下,可以以硬盘为单位,标记为一个Fail Group。一些高级的架构(如一体机等)中,通常把把每个存储节点标记为一个Fail Group,每个Fail Group里的所有硬盘互为partner disks。

冗余度越高数据越安全,但是硬盘成本也会越高。

3.2 命令行创建虚拟磁盘

  • 以管理员身份运行Windows Terminal或者PowerShell或者命令提示符,切换到VMware Workstation的安装目录下,例如我的安装目录是:
D:\Program Files (x86)\VMware\VMware Workstation
建议使用Windows Terminal或者PowerShell,命令提示符不支持shell命令

然后依次运行以下命令,每次输入后按回车执行,其中"F:\Visual Disks\21C\data1.vmdk"为虚拟磁盘存储路径,请依照自身实际情况替换:

./vmware-vdiskmanager -c -s 50Gb -a lsilogic -t 2 "F:\Visual Disks\21C\data1.vmdk"
./vmware-vdiskmanager -c -s 50Gb -a lsilogic -t 2 "F:\Visual Disks\21C\data2.vmdk"
./vmware-vdiskmanager -c -s 20Gb -a lsilogic -t 2 "F:\Visual Disks\21C\arch.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "F:\Visual Disks\21C\ocr1.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "F:\Visual Disks\21C\ocr2.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "F:\Visual Disks\21C\ocr3.vmdk"
执行过程

3.3 修改虚拟机配置文件

  • 虚拟磁盘创建好了,还要把这些盘加到虚拟机里,我们找到三台虚拟机的存放路径(不是虚拟磁盘的存放路径),可以看到每个虚拟机都有一个.vmx结尾的配置文件,右键单击这个文件,使用任何编辑器打开均可,没有安装编辑器的,使用记事本打开也可以;
虚拟机配置文件
  • 打开后在文件末尾处添加以下内容并保存(记得替换虚拟磁盘路径):
#shared disks configure start
disk.EnableUUID="TRUE"
disk.locking = "FALSE"
scsi1.shared = "TRUE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize= "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsil.sharedBus = "VIRTUAL"

scsi1:0.present = "TRUE"
scsi1:0.mode = "independent-persistent"
scsi1:0.fileName = "F:\Visual Disks\21C\data1.vmdk"
scsi1:0.deviceType = "disk"
scsi1:0.redo = ""

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.fileName = "F:\Visual Disks\21C\data2.vmdk"
scsi1:1.deviceType = "disk"
scsi1:1.redo = ""

scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.fileName = "F:\Visual Disks\21C\arch.vmdk"
scsi1:2.deviceType = "disk"
scsi1:2.redo = ""

scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.fileName = "F:\Visual Disks\21C\ocr1.vmdk"
scsi1:3.deviceType = "disk"
scsi1:3.redo = ""

scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.fileName = "F:\Visual Disks\21C\ocr2.vmdk"
scsi1:4.deviceType = "disk"
scsi1:4.redo = ""

scsi1:5.present = "TRUE"
scsi1:5.mode = "independent-persistent"
scsi1:5.fileName = "F:\Visual Disks\21C\ocr3.vmdk"
scsi1:5.deviceType = "disk"
scsi1:5.redo = ""
#shared disks configure end
  • 然后把同样的内容添加到第二、三台服务器的配置文件中,再打开虚拟机软件,此时可以看到三台服务器都已经识别到了共享磁盘

3.4 开启时间同步

点击编辑虚拟机设置,切换到“选项”,然后勾选“将客户机时间与主机同步”,再点“确定”保存。这样一来相当于变相配置了一个NTP服务器,确保三台虚拟机时间无差异;

然后将三台虚拟机开机,然而此时发生了一点小插曲。

3.5 小插曲

添加完共享磁盘后,我开机发现无法识别操作系统,默认进入了安装镜像,排查后发现是因为后添加的ISCI磁盘启动顺序在NVMe之前,这里采用如下方法调整:

  • 关机状态下,点虚拟机→电源→打开电源时进入固件

 

然后会进入BIOS界面,切换到Boot选项卡,再使用上下键切换到Hard Drive按回车,会列出当前所有硬盘,再使用+键把两个NVMe硬盘调整到最前面,如下图,再按F10保存退出,就可以正常开机了,当然这个操作还是要三台都执行。

3.6 修改HOSTNAME和IP地址

  • 三台虚拟机正常开机后,我们使用root身份登录虚拟机2和3的操作系统,使用如下命令修改HOSTNAME
root用户下

hostnamectl set-hostname 新HOSTNAME

然后查看修改结果
hostname

例如

此时root后面仍然是旧的hostname,但无需担心,重新打开终端即会刷新

  • 修改IP地址,在三台虚拟机上都要操作

点击左上角Applications,点击System Tool,再点击Settings

找到Network,可以看到网卡配置,依次点击网卡的右侧的齿轮按钮

在Details选项卡里勾选Connect automatically

然后点击IPv4选项卡,将我们先前规划好的IP地址依次填写,注意Netmask一律填写255.255.255.0或者24,然后Gateway填写你规划的网段的第一个地址,例如我使用的是192.168.72.X网段,则Gateway填写192.168.72.1,同时192.168.72.1这个地址也是你的物理机IP(即物理机上VMware虚拟网卡的地址);

另一张网卡同理

修改完成后点击连接开关,使两张网卡的状态均为ON

至此,三台虚拟机的HOSTNAME和IP地址都配置完成。

3.7 使用UDEV绑定ASM磁盘

以下操作需要在三台虚拟机上同时执行

  • 获取共享磁盘的UUID

root用户下,执行以下命令:

for disk in `ls /dev/sd*`
                  do
                    echo $disk
                    /usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=$disk
                  done

 

可以查看到所有ISCI磁盘的UUID,这个UUID在三台虚拟机上都是一样的,例如:

确保UUID在三台服务器都相同
  • 保存并记录每个硬盘的UUID,然后新建UDEV规则文件并保存:
root用户下
vi /etc/udev/rules.d/99-oracleasm.rules

添加以下内容

KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29828eb23bfc7af48736e1db094", SYMLINK+="asm-diska", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29e930e17110e7156996be9b2a5", SYMLINK+="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29e43fa2988513b7228780d9db8", SYMLINK+="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c296bd2494fb29af055c17c7397b", SYMLINK+="asm-diskd", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c291aaf1c48a7b32459ee6d56bcc", SYMLINK+="asm-diske", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c298cbf6e5fa1582001970c59b11", SYMLINK+="asm-diskf", OWNER="grid", GROUP="asmadmin", MODE="0660"

其中RESULT==" "中的数字就是每个硬盘的UUID,有几个盘写几行,务必注意UUID与后面SYMLINK(磁盘别名)的对应关系,一个字母都不能错。

然后依次执行以下命令使规则生效:

/sbin/udevadm trigger --type=devices --action=change
/sbin/udevadm control --reload-rules

确认绑定结果

ll /dev/asm*
绑定成功

至此,共享磁盘配置结束。

 

四、安装集群软件

对,你没看错,在前文那么多准备工作之后,现在才开始正式安装。

从这一步开始,我们将前文创建的三台虚拟机分别称为节点1,节点2,节点3。

4.1 配置本地YUM源

以下操作需要在每个节点执行

我们之前安装操作系统的镜像,如果没有做过多余操作的话,此时应该挂载在/dev/sr0,利用这个镜像搭建本地yum源

root用户下

mkdir -p /mnt/cdrom
mount /dev/sr0 /mnt/cdrom

编辑YUM规则文件

cd /etc/yum.repos.d/
rm -rf *
vi /etc/yum.repos.d/local.repo

新增以下内容

[local-BaseOS]
name=RHEL-BaseOS
baseurl=file:///mnt/cdrom/BaseOS
gpgcheck=0
enabled=1

[local-AppStream]
name=RHEL-AppStream
baseurl=file:///mnt/cdrom/AppStream
gpgcheck=0
enabled=1

保存并退出,然后依次执行

dnf clean  all
dnf makecache

4.2 下载并上传安装包

Oracle数据库相关安装包官方下载地址

需要下载两个安装包

  • LINUX.X64_213000_db_home.zip
  • LINUX.X64_213000_grid_home.zip

上传至1节点服务器上(节点2和3无需上传),例如

root
mkdir -p /soft

将2个安装包上传至/soft下
修改属组权限

chown -R grid:oinstall /soft
chmod -R 775  /soft
chown -R oracle:oinstall /soft/LINUX.X64_213000_db_home.zip

 

4.3 修改环境变量

以下操作需要在每个节点执行,注意不同节点的SID不同

grid用户

vi .bash_profile

#添加并保存
export ORACLE_SID=+ASM1               #节点1为ASM1,节点2为ASM2,节点3为ASM3
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/product/21.3.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022

#生效
source .bash_profile  

oracle用户

vi .bash_profile

#添加并保存
export ORACLE_SID=eitadb1      #数据库SID自定,节点1为eitadb1,节点2为eitadb2,节点3为eitadb3
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/product/21.3.0/db
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022

#生效
source .bash_profile  

 

4.4 解压安装包

  • 1节点grid用户下执行
cd /soft
unzip LINUX.X64_213000_grid_home.zip -d /u01/app/product/21.3.0/grid

解压完成后执行:

cd /u01/app/product/21.3.0/grid
./gridSetup.sh

此时在RHEL8环境下,可能会报错

libnsl.so.1: cannot open shared object file: No such file or directory

这是因为缺少libnsl包导致的,因为我们之前已经配置了本地YUM源,这里直接安装

root用户下

dnf install -y libnsl

然后回到grid用户,重新执行./gridSetup.sh命令,即可调出图形化安装界面。

Oracle 21C GI软件安装界面

 


这里说明一下,在本文的虚拟机环境中,因为我们可以直接登录操作系统的GUI,所以在GUI内的终端执行./gridSetup.sh后,会直接在虚拟机内打开安装界面,没有使用xmanager等软件从外部调图形化,原因一方面是因为因为这类软件通常都要付费,另一方面是不想在面向新手的教程中夹杂过多违背新手主题的内容。然而实际在生产环境中,我们通常不能直接登录操作系统的GUI,或者很多生产环境压根就未安装GUI,此时就不得不借助VNC或者Xmanager等工具,远程登录或者调取X窗口来进行图形化安装。


4.5 集群安装流程

1.我们选择Configure Oracle Grid Infrastructure for a New Cluster(为一个新集群配置Oracle Gird软件),然后点击Next

2.选择Configure an Oracle Standalone Cluster,然后Next

关于Oracle Standalone Cluster和Oracle Domain Services Cluster的区别

 

3.配置集群名称和SCAN NAME

这里集群名称(Cluster Name)是可以随便起的,但是SCAN Name必须和HOSTS文件中SCAN IP的解析名保持一致,例如我前文中HOSTS文件配置了:

192.168.72.100     eita-scan

所以这里SCAN Name填写eita-scan,端口号可以无特殊需求可保持默认

 

4.配置互信

默认会识别到当前节点的IP信息,点击Add添加

把其他节点的HOSTNAME和VIP添加进去

三个节点添加完成后是这样的,然后我们选中三个节点,再点击 SSH connectivity,在OS Password一栏里输入grid用户的密码,再点击Setup,这一步是为三个节点的grid用户配置互信

稍作等待后可以看到配置成功的提示,然后Next

 

5.网卡信息确认

如果你前面的网络配置是正确的,此时会看到Oracle已经自动识别出了两个不同网段,并分配了用途,其中网卡1为Public,网卡2为ASM&Private,检查无误后进行下一步

 

6.选择存储类型

选择Use Oracle Flex ASM for storage

7. GIMR选项

GMIR全称Grid Infrastructure Management Repository,是Oracle从12C开始新增的一个组件,开启GIMR后会自动生成一个MGMTDB数据库,用来存储Cluster Health Monitor生成的一些操作系统级的负载指标和历史信息,用于分析性能和诊断问题。这里我们选择不开启GIMR功能。

 

8. 创建VOTE磁盘组

如果前文磁盘配置不出错的话,在这里你会看到Oracle已经自动识别出了我们之前通过UDEV绑定的6块磁盘,注意这里创建的磁盘组是VOTE磁盘组,不是用来存储数据的磁盘组,我们选择之前创建好的3块1GB硬盘,起名为OCR,再选择Normal冗余模式,其他保持默认,进行下一步

 

9.创建SYS密码

这一步要求我们为SYS用户和ASMSNMP用户创建密码,我们选择第二项,为这两个用户创建相同的密码。

 

10.配置IPMI远程管理

直接下一步,不用修改

 

11.注册EM

EM是Oracle自己的一个监控管理工具,也是直接下一步,不用配置

 

12.确认用户属组

只要前期创建用户属组不出错,这里也不会出错,核对一下,直接下一步

 

13.指定BASE目录和Home目录

因为我们已经提前写好了环境变量,这里会直接读到,确认无误后下一步

 

14.指定Inventory目录

保持默认,下一步

 

15. 输入root密码(可选项)

这一步是可选项,如果你输入了root密码,那么后面安装结束时软件自动跑脚本,如果没提供root密码,后面就自己跑脚本,没什么实际影响,我这里直接跳过

16.安装环境检测

这一步会自动检测三个节点的操作系统环境,包括内核、IO参数和依赖包等,并把不符合安装条件的项目列出来

我这里提示了物理内存不足和若干内核参数不合规。

前文提到过,Oracle自12C开始推荐单节点最小内存为8GB,我创建虚拟机时分配了8GB内存,但是OS自己占用了一部分,目前实际可用只有7.6GB左右,所以出现了这个报错,可以忽略。

我这里没有提示缺依赖包,如果各位读者到这一步提示缺任何依赖包的话,直接使用dnf命令安装即可

dnf install -y 包名

接着我们点击Fix&Check again,也就是修复并重新检查,之后会提示你以root用户身份运行一个脚本:

/tmp/GridSetupActions2022-08-11_10-14-58AM/CVU_21.0.0.0.0_grid/runfixup.sh

这个脚本在每个节点都需要运行,路径是一样的,直接新开一个Terminal窗口,切换到root用户,复制进去回车即可

运行完成后回到安装界面,点击OK,会再次检查安装环境,然后抛出一个提示

这个提示的意思是,修复已经完成,但是部分参数(如Soft Limit)需要关闭安装界面,重新登录当前用户才能生效,我这里直接忽略。

剩下的几个不可自动修复的问题也是可以直接忽略的,例如DNS、NTP等,我们简易的虚拟机环境并不具备这些条件(如果你愿意折腾,也可以再新建虚拟机,专门配置一台NTP服务器和DNS服务器,彻底解决这个检查项),因为都是保险措施,直接忽略也不影响安装,所以直接给Ignore All打钩,然后下一步

 

17.确认参数

这里是一个summary,显示先前各个步骤中指定的参数,确认一下,没有问题后直接点Install就开始安装了

 

18.安装进度

这里显示安装进度,可以点击Details查看具体到哪一步

4.6 运行root脚本

安装到中间时,会弹出一个窗口,要求你使用root用户运行两个脚本,我们新开Terminal窗口切换到root,复制路径运行

这里一定要注意运行的顺序,正确的顺序是:

先把第一个脚本分别在每个节点运行完成,再在每个节点运行第二个脚本

也就是说,先在每个节点跑一遍orainstRoot.sh,按节点顺序执行(1节点跑完2节点跑,2节点跑完3节点跑);

三个节点都执行完orainstRoot.sh脚本后,再执行root.sh脚本,也同样是按节点顺序执行。

不可以搞错顺序,尤其是第二个脚本!

第二个脚本在执行时会提示你选择local bin目录,默认是/usr/local/bin,直接回车:

然后会显示各个集群组件的安装进度,这里需要等待较长时间,运行结束后是这样的:

1节点运行结果
其他节点运行结果

运行结束后回到安装界面,点击OK,继续安装。

安装到快结束时会抛出一个报错:

这个报错跟我们之前忽略的检查项有关,我们点击OK,再点击Skip跳过

YES确认

Close关闭窗口

 

4.7 检查集群资源

到上一步时,其实每个节点的集群已经配置好了,我们可以在任意节点的grid用户下执行以下命令进行检查

crsctl status res -t
集群资源信息

此时所有资源在所有节点上都应当处于ONLINE状态

 

五、安装数据库软件

5.1 解压安装包

在1节点新建Terminal窗口,切换到oracle用户,执行以下命令

cd /soft
unzip LINUX.X64_213000_db_home.zip -d /u01/app/product/21.3.0/db

解压完成后执行

cd /u01/app/product/21.3.0/db
./runInstaller

 

5.2 数据库安装流程

1.安装界面出现以后,我们选择第二项Set Up Software Only

两者的区别是:

选择第一项,会在安装软件的同时自动建库;

选择第二项,仅安装软件,稍后手动建库,为了完整的演示建库流程,我这里选择第二项。

2.这里选择集群数据库安装

3.又到了配置互信的环节,和之前一样

4.版本通常选择企业版

5.指定BASE目录和HOME目录

6.检查用户属组

7.提供ROOT密码用于自动运行脚本

安装数据库软件和安装集群软件时一样,在安装到中间阶段时都会要求运行脚本

先前我们在安装集群软件的时候没有输入密码,手动运行了脚本,这次我们输入root密码,让软件自动运行脚本,把两种方式都展现出来,方便读者对比区别

8.安装环境检查

还是那几个项目不过关,我们继续点击Fix&Check Again

不同的是这一次因为我们提前输入了root密码,所以安装程序会自动运行修复脚本,不再需要手动运行,同时给出如下提示,直接点OK

 

这里单独说一下Soft Limit:maximumstacksize这一项,这一项是可以自动修复的,我们在点击Fix之后再去查看limits.conf文件,可以看到已经修复成功了,只是安装程序未能检测到。

root用户
vi /etc/security/limits.conf
已经修复成功

其他的未通过项不管,直接Ignore All

 

9.确认所有参数无误,点击Install开始安装

 

10.进度条增加中

可以看到因为提前输入了root密码,安装程序会自动运行root脚本,并给出了提示,直接点击YES

11.安装完成,Close退出

 

六、创建数据库

6.1 新建磁盘组

在任意节点新建Terminal终端窗口,切换到grid用户,执行以下命令

asmca

出现ASM Configuration Assistant界面,点击左侧边栏Disk Groups

可以看到目前只有一个OCR磁盘组,我们还需要创建DATA和ARCH磁盘组,分别用于存储数据和归档

点击下方Create

可以看到所有可用的硬盘,我们勾选两个50GB的硬盘,输入磁盘组名称,选择External冗余,再点击OK

稍作等待即可创建完成

再创建ARCH磁盘组,此时只剩一块硬盘可选了

最终结果,确认无误后Exit退出

6.2 DBCA建库

在任意节点新建Terminal终端窗口,切换到oracle用户,执行以下命

打开Database Configuration Assistant窗口

dbca

1.选择Create a database

2.选择高级设置

3.数据库类型选择,保持默认即可

4.选择节点,同时勾选三个节点

5.指定数据库Global Name和SID,这里建议跟之前环境变量里配置的保持一致

值得注意的是下半部分,是否要创建成CDB(容器数据库),容器数据库是Oracle从12C版本开始引入的特性,一个容器数据库下可允许包含若干个可插拔数据库(PDB),每个PDB都是互相独立的,只在最外层共享CDB的资源。

在12C版本里是可以选择不创建成CDB,这样的数据库就跟以往11g时代的数据库一样,但是在21C里是要强制创建为CDB,无法取消勾选。

6.指定数据存放的磁盘组

7.开启归档,并指定归档路径

为了与.dbf数据文件区分,我把归档文件的后缀改为了.arc

同时在下方指定归档存放在ARCH磁盘组,注意写磁盘组的时候前面要带+号

8.Vault和Label Security是Oracle数据库的两个功能,详细的可自行了解,这里默认不开启

 

9.指定内存大小,字符集等;

我这里选择了ASMM的内存管理方式,SGA和PGA共分配可用物理内存的50%

(Oracle的内存管理可是一门大学问,感兴趣的可以专门去了解)

Process是进程数,在生产环境中通常要结合业务的实际情况进行调整,这里只是演示,我们随便设置一个

字符集的选择非常重要,它一旦选定不可修改。在生产环境中,一定要根据业务的反馈,选择正确的字符集,否则会导致数据乱码等问题。其他选项保持默认,进行下一步

10.不注册EM,下一步

11.创建SYS和SYSTEM密码

选择第二项,为SYS/SYSTEM/PDBADMIN用户创建相同的密码,并牢记

12.调整存储路径

点击Customize Storage Locations修改存储路径

可以看到,能修改的有控制文件(Control Files)、数据文件(Datafile)以及redo log的大小和数量

Controlfile参数,建议保持默认,除非你完全清楚你修改的参数的含义

Control Files

Datafiles里面是数据库系统表空间的数据文件,因为我前面勾选了OMF(Oracle管理文件),所以此处不可修改,如果没有勾选OMF,这里是可以修改每个表空间对应的数据文件、初始大小和自动扩展性等参数的。

Datafiles

Redo日志组数和大小

默认情况下,dbca为每个节点创建2组redo,每组大小200M

演示阶段不做调整,但是在实际生产环境中通常要根据业务量增加若干组redo,并调整每组redo大小

简单说一下修改Redo的相关事项:

Add:新增一组redo

Group#:指定redo的序号,这个序号在所有节点都是唯一的,不可重复;

File Size:指定大小;

Thread:指定线程号,线程号对应节点号,例如当前redo的Thread为1,则表示这个redo是给1节点使用的;

记得每组redo修改后都要点一下Apply才能保存,如果你修改了半天,只在最后点了Apply,那只会保存最近一次的操作;

上述信息确认无误后点Next

13.安装环境检查

是的,又要检查一遍,老样子Ignore All,然后点Next和YES

 

14.确认所有建库参数,无误则点击Finish

15.正式开始建库

16.建库完成,Close退出

 

七、环境验证和数据库登录

到此为止,集群安装、数据库安装、新建数据库都已经全部完成,我们进行以下几个简单步骤进行验证

7.1 查看集群资源

之前说过查看集群资源的命令,我们重新执行一次,任意节点grid用户下执行

crsctl status res -t

可以看到对比之前,集群内新增了数据库相关资源,均为ONLINE状态

[grid@eita1 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita2                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.chad
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita2                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.net1.network
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita2                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.ons
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita2                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ARCH.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       eita1                    STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    Started,STABLE
      2        ONLINE  ONLINE       eita2                    Started,STABLE
      3        ONLINE  ONLINE       eita3                    Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.cdp1.cdp
      1        ONLINE  ONLINE       eita1                    STABLE
ora.cvu
      1        ONLINE  ONLINE       eita1                    STABLE
ora.eita1.vip
      1        ONLINE  ONLINE       eita1                    STABLE
ora.eita2.vip
      1        ONLINE  ONLINE       eita2                    STABLE
ora.eita3.vip
      1        ONLINE  ONLINE       eita3                    STABLE
ora.eitadb.db
      1        ONLINE  ONLINE       eita1                    Open,HOME=/u01/app/p
                                                             roduct/21.3.0/db,STA
                                                             BLE
      2        ONLINE  ONLINE       eita2                    Open,HOME=/u01/app/p
                                                             roduct/21.3.0/db,STA
                                                             BLE
      3        ONLINE  ONLINE       eita3                    Open,HOME=/u01/app/p
                                                             roduct/21.3.0/db,STA
                                                             BLE
ora.eitadb.fmsdb.pdb
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.qosmserver
      1        ONLINE  ONLINE       eita1                    STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       eita1                    STABLE
--------------------------------------------------------------------------------

 

7.2 登录数据库

任意节点oracle用户,依次执行以下命令,可以查看数据库基本信息

sqlplus / as sysdba
show parameter name
show pdbs

例如

[oracle@eita1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on Thu Aug 11 16:36:07 2022
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL> 
SQL> 
SQL> show parameter name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
cdb_cluster_name		     string
cell_offloadgroup_name		     string
db_file_name_convert		     string
db_name 			     string	 eitadb
db_unique_name			     string	 eitadb
global_names			     boolean	 FALSE
instance_name			     string	 eitadb1
lock_name_space 		     string
log_file_name_convert		     string
pdb_file_name_convert		     string
processor_group_name		     string

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
service_names			     string	 eitadb
SQL> 
SQL> 
SQL> show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 FMSDB			  READ WRITE NO
SQL> 

 

7.3 检查监听状态

每个节点oracle用户或者grid用户,执行

lsnrctl status

例如

[oracle@eita1 ~]$ lsnrctl status

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 11-AUG-2022 16:38:43

Copyright (c) 1991, 2021, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 21.0.0.0.0 - Production
Start Date                11-AUG-2022 13:18:33
Uptime                    0 days 3 hr. 20 min. 9 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/product/21.3.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/eita1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.72.101)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.72.201)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_ARCH" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_OCR" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "c8209f27c6b16005e053362ee80ae60e" has 1 instance(s).
  Instance "eitadb1", status READY, has 1 handler(s) for this service...
Service "e5f3f09d4e6adca3e0536748a8c0b750" has 1 instance(s).
  Instance "eitadb1", status READY, has 1 handler(s) for this service...
Service "eitadb" has 1 instance(s).
  Instance "eitadb1", status READY, has 1 handler(s) for this service...
Service "eitadbXDB" has 1 instance(s).
  Instance "eitadb1", status READY, has 1 handler(s) for this service...
Service "fmsdb" has 1 instance(s).
  Instance "eitadb1", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@eita1 ~]$ 

可以看到CDB、PDB和ASM实例都是READY状态

接下来就可以正常使用数据库,存取数据了,安装部署的流程到此结束。

 

八、RAC集群的启停

接下来讲一点Oracle RAC集群启停的基本操作指南。因为我们刚安装完集群是已经起好的,所以从关闭→开启的顺序记录。

8.1 集群的停止和虚拟机关机

在安装完RAC集群后,虚拟机的关机不能那么随意了,每次关机之前必须先停止数据库和集群再关机,直接关机的话不仅关机速度变的非常慢,而且下次开机后启动数据库和集群可能会遇到一些莫名奇妙的错误。

  • 关闭数据库实例

关闭数据库有两种方法,第一种是每个节点的oracle用户下登录sqlplus关闭

sqlplus / as sysdba
shutdown immediate

注:oracle数据库的shutdown命令有normalimmediateabort三个子选项,区别请自行了解。

通过sqlplus命令关闭数据库实例的缺点是只能关闭当前节点,关闭其他节点需要在对应节点执行。

除此之外我们还可以通过集群管理命令关闭数据库实例,这种方法的好处是在任意节点都可以关闭其他节点的数据库实例。

在oracle用户下,执行以下命令,运行这个命令将会立即在所有节点关闭数据库实例,等同于在所有节点同时执行了shutdown immediate命令

srvctl stop database -d dbname

也可以单独关闭指定节点的数据库实例:

srvctl stop instance -n 节点HOSTNAME

 

  • 停止RAC集群

启动或停止RAC集群都需要在root用户下执行

停止RAC集群,前面要跟grid home目录的绝对路径,否则root用户下找不到crsctl命令

/u01/app/product/21.3.0/grid/bin/crsctl stop cluster -all

这个命令将会立即停止所有节点的所有集群资源,例如

[root@eita1 ~]# /u01/app/product/21.3.0/grid/bin/crsctl stop cluster -all
CRS-2673: Attempting to stop 'ora.crsd' on 'eita1'
CRS-2673: Attempting to stop 'ora.crsd' on 'eita3'
CRS-2673: Attempting to stop 'ora.crsd' on 'eita2'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'eita1'
CRS-2673: Attempting to stop 'ora.cdp1.cdp' on 'eita1'
CRS-2673: Attempting to stop 'ora.qosmserver' on 'eita1'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'eita1'
CRS-2673: Attempting to stop 'ora.cvu' on 'eita1'
CRS-2673: Attempting to stop 'ora.chad' on 'eita1'
CRS-33673: Attempting to stop resource group 'ora.asmgroup' on server 'eita1'
CRS-2673: Attempting to stop 'ora.OCR.dg' on 'eita1'
CRS-2673: Attempting to stop 'ora.ARCH.dg' on 'eita1'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'eita1'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'eita3'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'eita3'
CRS-2673: Attempting to stop 'ora.chad' on 'eita3'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'eita2'
CRS-2673: Attempting to stop 'ora.chad' on 'eita2'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'eita2'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.eita1.vip' on 'eita1'
CRS-2677: Stop of 'ora.DATA.dg' on 'eita1' succeeded
CRS-2677: Stop of 'ora.OCR.dg' on 'eita1' succeeded
CRS-2677: Stop of 'ora.ARCH.dg' on 'eita1' succeeded
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'eita3' succeeded
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'eita1'
CRS-2673: Attempting to stop 'ora.eita2.vip' on 'eita2'
CRS-2673: Attempting to stop 'ora.eita3.vip' on 'eita3'
CRS-2677: Stop of 'ora.cdp1.cdp' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'eita1'
CRS-2677: Stop of 'ora.eita2.vip' on 'eita2' succeeded
CRS-2677: Stop of 'ora.eita3.vip' on 'eita3' succeeded
CRS-2677: Stop of 'ora.eita1.vip' on 'eita1' succeeded
CRS-2677: Stop of 'ora.cvu' on 'eita1' succeeded
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'eita1'
CRS-2677: Stop of 'ora.scan1.vip' on 'eita1' succeeded
CRS-2677: Stop of 'ora.asm' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'eita1'
CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.asmnet1.asmnetwork' on 'eita1'
CRS-2677: Stop of 'ora.asmnet1.asmnetwork' on 'eita1' succeeded
CRS-33677: Stop of resource group 'ora.asmgroup' on server 'eita1' succeeded.
CRS-2677: Stop of 'ora.chad' on 'eita2' succeeded
CRS-33673: Attempting to stop resource group 'ora.asmgroup' on server 'eita3'
CRS-2673: Attempting to stop 'ora.OCR.dg' on 'eita3'
CRS-2673: Attempting to stop 'ora.ARCH.dg' on 'eita3'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'eita3'
CRS-2677: Stop of 'ora.chad' on 'eita3' succeeded
CRS-2677: Stop of 'ora.OCR.dg' on 'eita3' succeeded
CRS-2677: Stop of 'ora.ARCH.dg' on 'eita3' succeeded
CRS-2677: Stop of 'ora.DATA.dg' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'eita3'
CRS-2677: Stop of 'ora.chad' on 'eita1' succeeded
CRS-2677: Stop of 'ora.qosmserver' on 'eita1' succeeded
CRS-2677: Stop of 'ora.asm' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'eita3'
CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.asmnet1.asmnetwork' on 'eita3'
CRS-2677: Stop of 'ora.asmnet1.asmnetwork' on 'eita3' succeeded
CRS-33673: Attempting to stop resource group 'ora.asmgroup' on server 'eita2'
CRS-2673: Attempting to stop 'ora.OCR.dg' on 'eita2'
CRS-2673: Attempting to stop 'ora.ARCH.dg' on 'eita2'
CRS-33677: Stop of resource group 'ora.asmgroup' on server 'eita3' succeeded.
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'eita2'
CRS-2677: Stop of 'ora.OCR.dg' on 'eita2' succeeded
CRS-2677: Stop of 'ora.ARCH.dg' on 'eita2' succeeded
CRS-2677: Stop of 'ora.DATA.dg' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'eita2'
CRS-2673: Attempting to stop 'ora.ons' on 'eita3'
CRS-2677: Stop of 'ora.ons' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'eita3'
CRS-2677: Stop of 'ora.net1.network' on 'eita3' succeeded
CRS-2677: Stop of 'ora.asm' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'eita2'
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'eita3' has completed
CRS-2677: Stop of 'ora.crsd' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'eita3'
CRS-2677: Stop of 'ora.ctssd' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.evmd' on 'eita3'
CRS-2673: Attempting to stop 'ora.storage' on 'eita3'
CRS-2677: Stop of 'ora.storage' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'eita3'
CRS-2677: Stop of 'ora.evmd' on 'eita3' succeeded
CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.asmnet1.asmnetwork' on 'eita2'
CRS-2677: Stop of 'ora.asmnet1.asmnetwork' on 'eita2' succeeded
CRS-33677: Stop of resource group 'ora.asmgroup' on server 'eita2' succeeded.
CRS-2673: Attempting to stop 'ora.ons' on 'eita2'
CRS-2677: Stop of 'ora.ons' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'eita2'
CRS-2677: Stop of 'ora.net1.network' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'eita1'
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'eita2' has completed
CRS-2677: Stop of 'ora.ons' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'eita1'
CRS-2677: Stop of 'ora.net1.network' on 'eita1' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'eita1' has completed
CRS-2677: Stop of 'ora.crsd' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'eita2'
CRS-2673: Attempting to stop 'ora.storage' on 'eita2'
CRS-2673: Attempting to stop 'ora.evmd' on 'eita2'
CRS-2677: Stop of 'ora.storage' on 'eita2' succeeded
CRS-2677: Stop of 'ora.crsd' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.storage' on 'eita1'
CRS-2677: Stop of 'ora.storage' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'eita1'
CRS-2673: Attempting to stop 'ora.asm' on 'eita2'
CRS-2677: Stop of 'ora.evmd' on 'eita2' succeeded
CRS-2677: Stop of 'ora.asm' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'eita3'
CRS-2677: Stop of 'ora.ctssd' on 'eita2' succeeded
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'eita3'
CRS-2677: Stop of 'ora.cssd' on 'eita3' succeeded
CRS-2677: Stop of 'ora.asm' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'eita2'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'eita2'
CRS-2677: Stop of 'ora.cssd' on 'eita2' succeeded
CRS-2677: Stop of 'ora.asm' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'eita1'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'eita1'
CRS-2673: Attempting to stop 'ora.evmd' on 'eita1'
CRS-2677: Stop of 'ora.ctssd' on 'eita1' succeeded
CRS-2677: Stop of 'ora.evmd' on 'eita1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'eita1'
CRS-2677: Stop of 'ora.cssd' on 'eita1' succeeded
[root@eita1 ~]# 

同样地,也可以单独停止某一节点的集群,其他节点不受影响

/u01/app/product/21.3.0/grid/bin/crsctl stop cluster -n HOSTNAME

例如,我在1节点上停止2节点的集群

[root@eita1 ~]# /u01/app/product/21.3.0/grid/bin/crsctl stop cluster -n eita2
CRS-2673: Attempting to stop 'ora.crsd' on 'eita2'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'eita2'
CRS-2673: Attempting to stop 'ora.eitadb.fmsdb.pdb' on 'eita2'
CRS-2673: Attempting to stop 'ora.chad' on 'eita2'
CRS-2677: Stop of 'ora.eitadb.fmsdb.pdb' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.eitadb.db' on 'eita2'
CRS-2677: Stop of 'ora.eitadb.db' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'eita2'
CRS-33673: Attempting to stop resource group 'ora.asmgroup' on server 'eita2'
CRS-2673: Attempting to stop 'ora.OCR.dg' on 'eita2'
CRS-2673: Attempting to stop 'ora.ARCH.dg' on 'eita2'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'eita2'
CRS-2677: Stop of 'ora.OCR.dg' on 'eita2' succeeded
CRS-2677: Stop of 'ora.ARCH.dg' on 'eita2' succeeded
CRS-2677: Stop of 'ora.DATA.dg' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'eita2'
CRS-2677: Stop of 'ora.asm' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'eita2'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.eita2.vip' on 'eita2'
CRS-2677: Stop of 'ora.eita2.vip' on 'eita2' succeeded
CRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.asmnet1.asmnetwork' on 'eita2'
CRS-2677: Stop of 'ora.asmnet1.asmnetwork' on 'eita2' succeeded
CRS-33677: Stop of resource group 'ora.asmgroup' on server 'eita2' succeeded.
CRS-2677: Stop of 'ora.chad' on 'eita2' succeeded
CRS-2672: Attempting to start 'ora.eita2.vip' on 'eita3'
CRS-2676: Start of 'ora.eita2.vip' on 'eita3' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'eita2'
CRS-2677: Stop of 'ora.ons' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'eita2'
CRS-2677: Stop of 'ora.net1.network' on 'eita2' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'eita2' has completed
CRS-2677: Stop of 'ora.crsd' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'eita2'
CRS-2673: Attempting to stop 'ora.storage' on 'eita2'
CRS-2673: Attempting to stop 'ora.evmd' on 'eita2'
CRS-2677: Stop of 'ora.storage' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'eita2'
CRS-2677: Stop of 'ora.ctssd' on 'eita2' succeeded
CRS-2677: Stop of 'ora.evmd' on 'eita2' succeeded
CRS-2677: Stop of 'ora.asm' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'eita2'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'eita2' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'eita2'
CRS-2677: Stop of 'ora.cssd' on 'eita2' succeeded
[root@eita1 ~]# 

此时查看集群资源列表,发现2节点的资源都已经不见或者OFFLINE了

[root@eita1 ~]# /u01/app/product/21.3.0/grid/bin/crsctl status res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.chad
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.net1.network
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.ons
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ARCH.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  OFFLINE                               STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  OFFLINE                               STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  OFFLINE                               STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       eita1                    STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  OFFLINE                               STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    Started,STABLE
      2        ONLINE  OFFLINE                               STABLE
      3        ONLINE  ONLINE       eita3                    Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  OFFLINE                               STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.cdp1.cdp
      1        ONLINE  ONLINE       eita1                    STABLE
ora.cvu
      1        ONLINE  ONLINE       eita1                    STABLE
ora.eita1.vip
      1        ONLINE  ONLINE       eita1                    STABLE
ora.eita2.vip
      1        ONLINE  INTERMEDIATE eita3                    FAILED OVER,STABLE
ora.eita3.vip
      1        ONLINE  ONLINE       eita3                    STABLE
ora.eitadb.db
      1        ONLINE  ONLINE       eita1                    Open,HOME=/u01/app/p
                                                             roduct/21.3.0/db,STA
                                                             BLE
      2        ONLINE  OFFLINE                               Instance Shutdown,ST
                                                             ABLE
      3        ONLINE  ONLINE       eita3                    Open,HOME=/u01/app/p
                                                             roduct/21.3.0/db,STA
                                                             BLE
ora.eitadb.fmsdb.pdb
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  OFFLINE                               STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.qosmserver
      1        ONLINE  ONLINE       eita1                    STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       eita1                    STABLE
--------------------------------------------------------------------------------
[root@eita1 ~]# 

 

8.2 集群的启动

默认情况下,在操作系统开机时,集群会自动启动(但数据库不会),所以重启虚拟机后一般无需专门启动集群,

只需启动数据库实例:

oracle用户下

srvctl start database -d CDBNAME
srvctl start pdb -d CDBNAME

注:第一个命令启动CDB,第二个命令启动某CDB下面的所有PDB

例如

srvctl start database -d eitadb
srvctl start pdb -d eitadb

 

如果遇到需要手动启动集群的情况,执行以下命令:

root用户下

$GRID_HOME/bin/crsctl start cluster -all

这个命令将会立即在所有节点上启动集群。手动启动集群时,数据库实例也会启动,但仅限CDB,PDB不会随着集群一起启动。

例如

[root@eita1 ~]# /u01/app/product/21.3.0/grid/bin/crsctl start cluster -all
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'eita1'
CRS-2672: Attempting to start 'ora.evmd' on 'eita1'
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'eita3'
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'eita2'
CRS-2672: Attempting to start 'ora.evmd' on 'eita2'
CRS-2676: Start of 'ora.cssdmonitor' on 'eita2' succeeded
CRS-2672: Attempting to start 'ora.evmd' on 'eita3'
CRS-2672: Attempting to start 'ora.cssd' on 'eita2'
CRS-2676: Start of 'ora.cssdmonitor' on 'eita3' succeeded
CRS-2672: Attempting to start 'ora.diskmon' on 'eita2'
CRS-2672: Attempting to start 'ora.cssd' on 'eita3'
CRS-2676: Start of 'ora.cssdmonitor' on 'eita1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'eita1'
CRS-2672: Attempting to start 'ora.diskmon' on 'eita1'
CRS-2676: Start of 'ora.diskmon' on 'eita1' succeeded
CRS-2676: Start of 'ora.diskmon' on 'eita2' succeeded
CRS-2676: Start of 'ora.evmd' on 'eita1' succeeded
CRS-2672: Attempting to start 'ora.diskmon' on 'eita3'
CRS-2676: Start of 'ora.evmd' on 'eita2' succeeded
CRS-2676: Start of 'ora.diskmon' on 'eita3' succeeded
CRS-2676: Start of 'ora.evmd' on 'eita3' succeeded
CRS-2676: Start of 'ora.cssd' on 'eita3' succeeded
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'eita3'
CRS-2676: Start of 'ora.cssd' on 'eita2' succeeded
CRS-2672: Attempting to start 'ora.ctssd' on 'eita2'
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'eita2'
CRS-2676: Start of 'ora.cssd' on 'eita1' succeeded
CRS-2672: Attempting to start 'ora.ctssd' on 'eita1'
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'eita1'
CRS-2676: Start of 'ora.ctssd' on 'eita2' succeeded
CRS-2676: Start of 'ora.ctssd' on 'eita1' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'eita3' succeeded
CRS-2672: Attempting to start 'ora.ctssd' on 'eita3'
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'eita1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'eita1'
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'eita2' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'eita2'
CRS-2676: Start of 'ora.asm' on 'eita2' succeeded
CRS-2676: Start of 'ora.ctssd' on 'eita3' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'eita2'
CRS-2672: Attempting to start 'ora.asm' on 'eita3'
CRS-2676: Start of 'ora.asm' on 'eita3' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'eita3'
CRS-2676: Start of 'ora.asm' on 'eita1' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'eita1'
CRS-2676: Start of 'ora.storage' on 'eita1' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'eita1'
CRS-2676: Start of 'ora.crsd' on 'eita1' succeeded
CRS-2676: Start of 'ora.storage' on 'eita3' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'eita3'
CRS-2676: Start of 'ora.storage' on 'eita2' succeeded
CRS-2676: Start of 'ora.crsd' on 'eita3' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'eita2'
CRS-2676: Start of 'ora.crsd' on 'eita2' succeeded
[root@eita1 ~]# 

此时查看集群资源,可以看到CDB实例已经随着集群一起启动了,但PDB没有

[root@eita1 ~]# /u01/app/product/21.3.0/grid/bin/crsctl status res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita2                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.chad
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita2                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.net1.network
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita2                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
ora.ons
               ONLINE  ONLINE       eita1                    STABLE
               ONLINE  ONLINE       eita2                    STABLE
               ONLINE  ONLINE       eita3                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ARCH.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       eita1                    STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    Started,STABLE
      2        ONLINE  ONLINE       eita2                    Started,STABLE
      3        ONLINE  ONLINE       eita3                    Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       eita1                    STABLE
      2        ONLINE  ONLINE       eita2                    STABLE
      3        ONLINE  ONLINE       eita3                    STABLE
ora.cdp1.cdp
      1        ONLINE  ONLINE       eita1                    STABLE
ora.cvu
      1        ONLINE  ONLINE       eita1                    STABLE
ora.eita1.vip
      1        ONLINE  ONLINE       eita1                    STABLE
ora.eita2.vip
      1        ONLINE  ONLINE       eita2                    STABLE
ora.eita3.vip
      1        ONLINE  ONLINE       eita3                    STABLE
ora.eitadb.db
      1        ONLINE  ONLINE       eita2                    Open,HOME=/u01/app/p
                                                             roduct/21.3.0/db,STA
                                                             BLE
      2        ONLINE  ONLINE       eita1                    Open,HOME=/u01/app/p
                                                             roduct/21.3.0/db,STA
                                                             BLE
      3        ONLINE  ONLINE       eita3                    Open,HOME=/u01/app/p
                                                             roduct/21.3.0/db,STA
                                                             BLE
ora.eitadb.fmsdb.pdb
      1        OFFLINE OFFLINE                               STABLE
      2        OFFLINE OFFLINE                               STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.qosmserver
      1        ONLINE  ONLINE       eita1                    STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       eita1                    STABLE
--------------------------------------------------------------------------------
[root@eita1 ~]# 

同时,也可以单独启动某一节点的集群

root用户下

$GRID_HOME/bin/crsctl start cluster -n HOSTNAME

 

再按照前文所述,启动PDB实例,这样集群和数据库都启动成功了。

 

九、后记

从事Oracle DBA五年,很少出于自己的意愿,正儿八经写文章。有的只是一堆在工作中记录的经验集合,乱七八糟堆放在一起,只有我自己能看懂。时不时地给同事或者客户做技术分享,也都是以口头演讲为主,操作演示为辅,很少留下完整的、条理性的文章作品。

前两天和同事聊天,聊到了他们程序员使用Oracle数据库时的一些痛点,很多人声音集中在安装配置的繁琐上,我表示充分地理解。回想我自己大学的时候学习Oracle数据库,也好不到哪去,光是这安装就来来回回折腾了半个月,才勉强完整地安装出一套RAC。

所以鬼使神差地有了写教程的想法。

花了2天的业余时间写这篇文章,有正面的体验,那就是即便最基本的安装部署,当你详细地记录成文章,仔细地挖掘时,也会有新的收获,尤其是当你想到阅读这篇文章的人可能是和你当年一样的初学者,你便会不由自主地去解释一些细节,有自己记忆模糊的地方还会去专门查询,这也是一种反哺。

不好的感受也有,想到我一个Oracle DBA洋洋洒洒花了2万7千字才写出了一个完整的Oracle集群搭建教程,虽说其中不乏有粒度较细的原因,还是加深了我对Oracle的负面印象,对新手真的太不友好。

Oracle在中国正在日薄西山,这是事实,可能有市场因素,有地缘政治因素,但一定也有它自身的因素。

愿每一位DBA都被善待,手动滑稽_(:3」∠❀)_

 

编辑于 2023-03-20 14:02・IP 属地中国
Oracle 数据库
Oracle 认证
数据库
 
写下你的评论...
 
 
25 条评论
 
默认
最新
大树
 

请问生产环境RAC是怎么规划的

10-09 · IP 属地广东
薛定谔的猫

特地登陆来回复的,很详细的教程,对于oracle新手来说太好了,最好把每个步骤的意义说明下。那就更好了。

08-28 · IP 属地上海
杂烩饭

很详细,已搭建好集群,电脑硬件资源不够,不装数据库了。有个疑问,grid用户为什么不能启停集群呢?应该是有权限得啊,我这边报没权限[发呆]

08-01 · IP 属地江苏
紫苑寺瑛太
 
作者
是的,stop cluster命令只能用root用户下执行,但是stop crs和stop has命令是可以使用grid用户执行的,这三者各有区别,你可以查一查
08-01 · IP 属地四川
紫苑寺瑛太
单节点不需要
08-11 · IP 属地四川
管佳文

我是两台物理机共享存储搭建rac,有点无从下手

06-29 · IP 属地广东
dongrayne

准备按老师写的步骤自己实践一遍, 不是dba纯属感兴趣. 先感谢,找了好久第一次看到写的这么详细的

03-16 · IP 属地黑龙江
你管我是谁
我现在遇到两个问题,一个问题是无法连接网络,还有一个问题就是在拷贝oracle grid,db的压缩包的时候显示内存不够,但明明我跟你的内存设置的一样大小[捂脸]
02-20 · IP 属地湖北
紫苑寺瑛太
我觉得要么是你搞错路径了,要么是你盘挂错地方了
02-22 · IP 属地四川
你管我是谁

磁盘太小

02-21 · IP 属地湖北
卍舜卍

我试了试 每一次在安装到 目录4.5 第18步的时候会崩溃 虚拟机连带着电脑一起崩溃 直接重启了电脑不知道是什么原因 我当时看了一下电脑cpu和内存 直接到百分之七八十 平时电脑内存是百分之十几 cpu是百分之四五 要是谁知道什么问题可以告诉我一下吗

02-18 · IP 属地安徽
紫苑寺瑛太
 
作者
可以在虚拟机设置里把虚拟引擎全部取消勾选再试试
02-18 · IP 属地四川
仁冬
 
下次试试
2022-09-22 · IP 属地浙江
zzitbar
 

漂亮,老铁,写的非常详细

2022-09-07 · IP 属地河南
咸鱼
 
大神太牛了[蹲]
2022-08-12 · IP 属地四川
 
点击查看全部评论
 
写下你的评论...
 
 
 

推荐阅读

VMware虚拟机硬盘容量不足,通过下面的方法给虚拟机磁盘扩容

VMware虚拟机硬盘容量不足,通过下面的方法给虚拟机磁盘扩容

Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置

Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置1.1 整体规划部分1.1.1 所需软件介绍Oracle RAC不支持异构平台。在同一个集群中,可以支持具有速度和规模不同的机器,但所有…

如何使用老毛桃winpe新建VMware虚拟磁盘文件?

如何使用老毛桃winpe新建VMware虚拟磁盘文件?

如何释放/收缩vmware虚拟磁盘空间

win10系统中,要在vmware中linux开发, 虚拟磁盘空间上百G, ssd空间常常告急, 如何如何释放vmware空间成了问题. 网上找的方法, 如从vmware界面,虚拟机设置->硬盘->压缩, 往往不起作用. …