本文介绍了使用 VirtualBox 和 Vagrant 在 Oracle Linux 7 上“不干涉”安装 Oracle Database 21c RAC,无需额外的共享磁盘设备。
如果您想知道为什么此安装没有 GUI 版本,请阅读为什么不再有 GUI 安装?
目录
TL;DR
如果您对 VirtualBox、Vagrant 和 RAC 感到满意,您可能希望直接跳转到 GitHub 存储库并使用此处的基本说明。
介绍
阻止人们设置测试 RAC 环境的最大障碍之一是对共享存储的需求。在生产环境中,共享存储通常由 SAN 或高端 NAS 设备提供,但是当您只想获得一些安装和使用 RAC 的经验时,这两种选择都非常昂贵。更便宜的替代方法是使用虚拟化来伪造共享存储。
使用 VirtualBox,您可以在单个服务器上运行多个虚拟机 (VM),从而允许您在一台机器上运行两个 RAC 节点。此外,它还允许您设置共享虚拟磁盘,克服昂贵的共享存储的障碍。
在以前的版本中,我介绍了手动安装,但这实际上没有意义,因为您不应再以这种方式安装任何东西,因此我将讨论静默安装。我将描述 Vagrant 构建的内容,因此将在 GitHub 上提供指向实际脚本的链接,而不是在此处重复它们。
在开始此安装之前,需要考虑以下几点。
- 完成的系统包括主机操作系统、三个客户操作系统、两套Oracle Grid Infrastructure(Clusterware + ASM)和两个数据库实例,都在一台机器上。可以想象,这需要大量的磁盘空间、CPU 和内存。
- 从最后一点开始,RAC 节点虚拟机每个都需要至少 6G 的 RAM,但是您会看到我为每个使用了 10G,而且速度仍然很慢。不要假设您可以在小型 PC 或笔记本电脑上运行它。你不会。
- 此过程提供了一个基本的安装来使 RAC 正常工作。Grid Infrastructure 安装或 ASM 安装中没有冗余。要添加此功能,只需创建双倍数量的共享磁盘,并在提供时选择“正常”冗余选项。当然,这会占用更多的磁盘空间。
- 这不是,也不应该被视为生产就绪系统的说明。它只是让您了解安装 RAC 需要什么,并为您提供一个系统进行试验。
- DNS 需要支持扫描侦听器。在以前的版本中,我建议在主机服务器上运行 DNS,但这更容易。
- 本文使用 64 位版本的 Oracle Linux 和 Oracle 21c。
- 在我的服务器上进行此安装时,我将虚拟磁盘拆分到不同的物理磁盘上。这不是必需的,但会使事情运行得更快一些。
- 这可能需要三个多小时才能完成。如果您有严重的内存或磁盘速度限制,可能会更长。
所需软件
在您的 PC 上下载并安装以下软件。如果您无法弄清楚这一步,您可能不应该考虑安装 RAC。
- VirtualBox
- Vagrant
- 用于您 PC 的 Git 客户端,因此您可以克隆 vagrant 存储库。
您还需要下载 21c grid和数据库软件
克隆库
在您的 PC 文件系统上选择一个区域作为此 git 存储库的基础并发出以下命令。
git clone https://github.com/oraclebase/vagrant.git
复制
将Oracle软件复制到“…/software/”目录下。从“rac/ol7_21”子目录,结构应该是这样的。
$ tree . +--- config | +--- install.env | +--- vagrant.yml +--- dns | +--- scripts | | +--- root_setup.sh | | +--- setup.sh | +--- Vagrantfile +--- node1 | +--- scripts | | +--- oracle_create_database.sh | | +--- oracle_db_software_installation.sh | | +--- oracle_grid_software_config.sh | | +--- oracle_grid_software_installation.sh | | +--- oracle_user_environment_setup.sh | | +--- root_setup.sh | | +--- setup.sh | +--- Vagrantfile +--- node2 | +--- scripts | | +--- oracle_user_environment_setup.sh | | +--- root_setup.sh | | +--- setup.sh | +--- Vagrantfile +--- README.md +--- shared_scripts | +--- configure_chrony.sh | +--- configure_hostname.sh | +--- configure_hosts_base.sh | +--- configure_hosts_scan.sh | +--- configure_shared_disks.sh | +--- install_os_packages.sh | +--- prepare_u01_disk.sh +--- software | +--- LINUX.X64_213000_db_home.zip | +--- LINUX.X64_213000_grid_home.zip | +--- put_software_here.txt
复制
在 Windows 上克隆存储库时,维护行终止符很重要。所有“.sh”脚本都在 Linux VM 内运行,因此它们需要 UNIX 样式的行终止符。如果您的 Git 客户端设置为在克隆/拉取时将所有文件转换为 Windows 样式的行终止符,那么当从 Linux 调用这些脚本时,您将遇到问题。
修改文件路径
“config”目录包含一个“install.env”和一个“vagrant.yml”文件。这两个文件的组合包含用于此构建的所有配置。您可以在此处更改构建的配置,但请记住确保两者的组合保持一致。
您至少需要修改“vagrant.yml”文件中的以下路径,为您的 PC 上的共享磁盘提供合适的路径。
asm_crs_disk_1: /u05/VirtualBox/shared/ol7_21_rac/asm_crs_disk_1.vdi asm_crs_disk_2: /u05/VirtualBox/shared/ol7_21_rac/asm_crs_disk_2.vdi asm_crs_disk_3: /u05/VirtualBox/shared/ol7_21_rac/asm_crs_disk_3.vdi asm_crs_disk_size: 2 asm_data_disk_1: /u05/VirtualBox/shared/ol7_21_rac/asm_data_disk_1.vdi asm_data_disk_size: 40 asm_reco_disk_1: /u05/VirtualBox/shared/ol7_21_rac/asm_reco_disk_1.vdi asm_reco_disk_size: 20
复制
例如,如果您在 Windows PC 上工作,您可以创建一个名为“C:\VirtualBox\shared\ol7_21_rac”的路径并使用以下设置。
asm_crs_disk_1: C:\VirtualBox\shared\ol7_21_rac\asm_crs_disk_1.vdi asm_crs_disk_2: C:\VirtualBox\shared\ol7_21_rac\asm_crs_disk_2.vdi asm_crs_disk_3: C:\VirtualBox\shared\ol7_21_rac\asm_crs_disk_3.vdi asm_crs_disk_size: 2 asm_data_disk_1: C:\VirtualBox\shared\ol7_21_rac\asm_data_disk_1.vdi asm_data_disk_size: 40 asm_reco_disk_1: C:\VirtualBox\shared\ol7_21_rac\asm_reco_disk_1.vdi asm_reco_disk_size: 20
复制
如果您不更改它们,它们将被写入“C:\u05\VirtualBox\shared\ol7_21_rac”。
构建 RAC
以下命令将为您提供一个正常运行的 RAC 安装。
启动 DNS 服务器。
cd dns vagrant up
复制
启动集群的第二个节点。这必须在您启动第一个节点之前运行。
cd ../node2 vagrant up
复制
忽略最后的“默认:主机密钥验证失败”。最后留言。没关系。
启动集群的第一个节点。这将执行所有安装操作。根据主机系统的规格,这可能需要很长时间。在我的一台服务器上,大约需要 3.5 小时才能完成。
cd ../node1 vagrant up
复制
关闭 RAC
执行以下操作以干净地关闭 RAC。
cd node2 vagrant halt cd ../node1 vagrant halt cd ../dns vagrant halt
复制
删除整个 RAC
以下命令将销毁所有 VM 和相关文件,因此您可以再次运行该过程。
cd node2 vagrant destroy -f cd ../node1 vagrant destroy -f cd ../dns vagrant destroy -f
复制
构建描述
从这里开始,我们将描述构建过程中的各个部分。请记住,所有参数都来自以下两个文件。
DNS 服务器构建
DNS 服务器构建非常简单。您可以在此处查看我收到的 vagrant 输出示例。构建这个虚拟机大约需要 5 分钟。
该Vagrantfile包含的VirtualBox虚拟机的定义,将建成,使用从参数vagrant.yml文件。默认值生成具有以下特征的 VM。
- 操作系统:Oracle Linux 7
- 虚拟机名称:ol7_21_dns
- CPU : 1
- 内存:1G
- 网卡 1:NAT 网络
- NIC 2 : 192.168.56.100 - 集群节点使用的“公共”网络上的 IP。
- 盘1:预装操作系统的盒盘。
VM 的最后阶段构建它以运行setup.sh脚本,该脚本仅运行root_setup.sh脚本。
该root_setup.sh脚本执行下列操作。
- 获取install.env文件以确保构建的所有环境变量都存在。
- 获取最新的 Yum 存储库文件。
- 为每个 RAC 节点的公共、私有和虚拟 IP 地址以及 SCAN IP 地址添加条目到 VM 中的“/etc/hosts”文件。这些是使用环境变量构建的。
- 安装并启用 Dnsmasq。这将“/etc/hosts”文件的内容呈现为 DNS 服务器,这是使用 BIND 进行 DNS 设置的更简单的替代方法。它不会对每个 DNS 解决方案都完美无缺,但它确实非常适合这种解决方案。
一旦vagrant up
命令完成,你将留下准备好与你的RAC使用一个正常运作的DNS服务器。
如果 DNS 构建有任何问题,请在修复它们之前不要继续使用 RAC 节点。
RAC 节点 2 构建
RAC 节点的 OS 基本设置非常相似,但节点 2 不执行任何安装操作,因此我们需要在启动节点 1 之前就位。您可以在此处查看我收到的 vagrant 输出示例。构建这个 VM 大约需要 5-10 分钟。
该Vagrantfile包含的VirtualBox虚拟机的定义,将建成,使用从参数vagrant.yml文件。默认值生成具有以下特征的 VM。
- 操作系统:Oracle Linux 7
- 虚拟机名称:ol7_21_rac2
- CPU : 4
- 内存:6144
- 网卡 1:NAT 网络
- NIC 2 : 192.168.56.102 - 集群节点使用的“公共”网络上的 IP。
- NIC 3 : 192.168.1.102 - 集群节点使用的“专用”网络上的 IP。
- 盘1:预装操作系统的盒盘。
- 磁盘 2:虚拟机本地的磁盘,用于“/u01”挂载点。
- 磁盘 3:CRS 磁盘 1。
- 磁盘 4:CRS 磁盘 2。
- 磁盘 5:CRS 磁盘 3。
- 磁盘 6:数据磁盘。
- 磁盘 7:RECO 磁盘。
VM 的最后阶段构建它以运行setup.sh脚本,该脚本仅运行root_setup.sh。
该root_setup.sh脚本执行下列操作。
- 获取install.env文件以确保构建的所有环境变量都存在。
- 运行prepare_u01_disk.sh对“/dev/sdb”本地磁盘进行分区,在生成的“/dev/sdb1”分区上创建一个文件系统,在“/etc/fstab”中添加一个条目,以便将来自动挂载,以及第一次手动挂载。
- 运行install_os_packages.sh以配置 Yum 存储库并安装 RAC 节点所需的操作系统包。这包括“oracle-database-preinstall-19c”包,它为我们做了一些操作系统设置。它还包括文档中列出的所有软件包,即使预安装软件包已经安装了一些软件包。包含一些额外的包只是因为安装自动化需要它们。
- 为“root”和“oracle”用户设置密码。这很愚蠢,但我们需要它来使整个过程保持沉默。
- 运行configure_hosts_base.sh将公共、私有和虚拟地址添加到“/etc/hosts”文件中。我们不需要 SCAN 地址,因为它们是由 DNS 提供的。我们也可以使用 DNS 来提供本地 IP 地址,但我更喜欢在这里也有这些。
- 将“/etc/resolv.conf”配置为指向 DNS 服务器 VM。
- 运行configure_chrony.sh来配置 Chrony,所以我们在安装过程中不会收到 NTP 错误。
- 运行configure_shared_disks.sh配置 ASM 使用的共享磁盘。如果 ASM 磁盘尚未分区,则会对它们进行分区。然后它会配置 UDEV,因此每次重新启动后,磁盘都会正确安装在此 VM 中。
- 运行oracle_user_environment_setup.sh为“oracle”用户创建环境脚本,创建
GRID_HOME
和DB_HOME
目录,并为“oracle”用户部分准备无密码认证(用户等效)。此过程将由节点 1 完成。 - 获取上一个脚本创建的“/home/oracle/scripts/setEnv.sh”脚本。
- 运行configure_hostname.sh以配置此 VM 的主机名。
- 为“root”用户部分准备无密码身份验证(用户等效)。此过程将由节点 1 完成。这对于 RAC 运行不是必需的,但对于此安装的自动化是必需的。
一旦vagrant up
命令完成,你会留下一个准备RAC节点2。
如果节点 2 构建有任何问题,请在修复它们之前不要继续节点 1 构建。
RAC 节点 1 构建
RAC 节点操作系统的基本设置非常相似,但与节点 2 不同的是,节点 1 设置还包括软件安装和配置操作。请记住,在启动此节点之前,DNS 和节点 2 虚拟机应该正在运行。您可以在此处查看我收到的 vagrant 输出示例。构建此 VM 大约需要1 小时。
该Vagrantfile包含的VirtualBox虚拟机的定义,将建成,使用从参数vagrant.yml文件。默认值生成具有以下特征的 VM。
- 操作系统:Oracle Linux 7
- 虚拟机名称:ol7_21_rac1
- CPU : 4
- 内存:7168M
- 网卡 1:NAT 网络
- NIC 2 : 192.168.56.101 - 集群节点使用的“公共”网络上的 IP。
- NIC 3 : 192.168.1.101 - 集群节点使用的“专用”网络上的 IP。
- 盘1:预装操作系统的盒盘。
- 磁盘 2:虚拟机本地的磁盘,用于“/u01”挂载点。
- 磁盘 3:CRS 磁盘 1。
- 磁盘 4:CRS 磁盘 2。
- 磁盘 5:CRS 磁盘 3。
- 磁盘 6:数据磁盘。
- 磁盘 7:RECO 磁盘。
VM 的最后阶段构建它以运行setup.sh脚本,该脚本仅运行root_setup.sh。
所述root_setup.sh脚本执行上述所有相同的操作的节点2构建描述的,但它也包括在安装和配置步骤。我们将只关注此处的差异,而不是重复对常见步骤的解释。
- 除了从节点 2 为“oracle”和“root”用户重复无密码身份验证(用户等效)步骤之外,节点 1 root_setup.sh脚本使用
sshpass
并ssh-copy-id
完成无密码身份验证。 - 在节点 1 和节点 2 上安装“cvuqdisk”包。
- 运行oracle_grid_software_installation.sh以执行 Grid Infrastructure 软件的静默安装。
- 在节点 1 和节点 2 上运行“orainstRoot.sh”。
- 在节点 1 上运行“root.sh”,然后在节点 2 上运行。
- 运行oracle_grid_software_config.sh以执行 Grid Infrastructure 的静默配置,然后显示集群状态。
- 运行oracle_db_software_installation.sh以执行数据库软件的静默安装。
- 在节点 1 上运行“root.sh”,然后在节点 2 上运行。
- 运行oracle_create_database.sh以使用 DBCA 执行数据库的静默创建。完成后,它会显示已安装服务的状态。
一旦vagrant up
命令完成,你将留下一个完全配置和运行2节点RAC。
有关更多信息,请参阅:
- 适用于 Linux 和 UNIX 的安装指南:Oracle Real Application Clusters - 第 21 版
- Linux 安装指南:Oracle 数据库 - 第 21 版
- Vagrant Oracle Real Application Clusters (RAC) 构建
- 所有 RAC 文章
- 静默安装和配置:所有文章
希望这可以帮助你。
文章来源:https://oracle-base.com/articles/21c/oracle-db-21c-rac-installation-on-oracle-linux-7-using-virtualbox