在裸金属解决方案上安装 Oracle RAC

本页介绍了如何在裸金属解决方案服务器上安装 Oracle Real Application Clusters (RAC)。

部署

在本指南中,我们将创建一个部署,其中包含安装在裸金属解决方案服务器上的 Oracle RAC 19c。我们将构建一个包含数据库的两个节点 RAC。

准备工作

  • 确保预配 RAC 所需的基础架构。这包括两个节点、共享存储空间以及用于托管 Oracle 主目录的专用卷。
  • 在本指南中,我们将使用 GUI 安装流程。如果您也想使用 GUI 安装流程,请按照 Oracle VNC 设置指南在某个节点上配置虚拟网络计算 (VNC)。
  • 创建本地挂载点 /apps 以托管 Oracle 主目录和 Grid 主目录。

安装 RAC

在裸金属解决方案上安装 RAC 涉及以下步骤:

  1. 为 RAC 安装准备节点
  2. 配置 Oracle ASM
  3. 执行安装前检查
  4. 安装 Oracle RAC
  5. 执行安装后步骤

为 RAC 安装准备节点

除非另有说明,否则请在两个节点上执行以下步骤:

  1. 使用 RAC 的以下 IP 地址更新 /etc/hosts 文件:

    • 公共 IP 地址
    • 专用 IP 地址
    • 虚拟 IP 地址
    • 扫描虚拟 IP 地址

    以下是经过修改的 /etc/hosts 文件示例:

    
     10.*.*.* bms-jumphost
    
     # public IP addresses for Oracle RAC
     192.*.*.* at-2811641-svr001 at-2811641-svr001.localdomain
     192.*.*.* at-2811641-svr002 at-2811641-svr002.localdomain
    
     # private IP addresses for Oracle RAC
     172.*.*.* at-2811641-svr001-priv at-2811641-svr001-priv.localdomain
     172.*.*.* at-2811641-svr002-priv at-2811641-svr002-priv.localdomain
    
     # virtual IP addresses for Oracle RAC
     192.*.*.* at-2811641-svr001-vip at-2811641-svr001-vip.localdomain
     192.*.*.* at-2811641-svr002-vip at-2811641-svr001-vip.localdomain
    
     # SCAN virtual IP addresses for Oracle RAC
     192.*.*.* psoracle-scan psoracle-scan.localdomain
     192.*.*.* psoracle-scann psoracle-scan.localdomain
     192.*.*.* psoracle-scan psoracle-scan.localdomain
    
    
  2. 为虚拟 IP 地址和 SCAN 虚拟 IP 地址进行 DNS 解析。

    我们使用 Cloud DNS 解析虚拟 IP 地址并扫描虚拟 IP 地址。如需了解相关说明,请参阅使用 Cloud DNS 配置 SCAN

  3. 使用内核参数更新 /etc/sysctl.conf 文件。

    
     vi /etc/sysctl.conf
    
     # Added for Oracle
     fs.file-max = 6815744
     kernel.sem = 250 32000 100 128
     kernel.shmmni = 4096
     kernel.shmall = 1073741824
     kernel.shmmax = 4398046511104
     kernel.panic_on_oops = 1
     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
     fs.aio-max-nr = 1048576
     net.ipv4.ip_local_port_range = 9000 65500
    
    
  4. 应用内核参数更新。

     /sbin/sysctl -p
    
  5. /etc/security/limits.conf 文件中,添加资源限制。

    
     vi /etc/security/limits.conf
    
     ## Added for Oracle
     grid soft nofile 1024
     grid hard nofile 65536
     grid soft nproc 2047
     grid hard nproc 16384
     grid soft stack 10240
     grid hard stack 32768
    
     oracle soft nofile 1024
     oracle hard nofile 65536
     oracle soft nproc 2047
     oracle hard nproc 16384
     oracle soft stack 10240
     oracle hard stack 32768
    
    
  6. 添加必要的用户和群组。

    
     groupadd -g 54321 oinstall
     groupadd -g 54322 dba
     groupadd -g 54323 oper
     groupadd -g 54327 asmdba
     groupadd -g 54328 asmoper
     groupadd -g 54329 asmadmin
    
     useradd -u 54321 -g oinstall -G dba,oper,asmdba,asmoper,asmadmin,oracle
    
    
  7. 安装 Oracle 预安装软件包。

    本指南假定您已设置 Oracle 代码库。

    
     yum install oracle-database-preinstall-19c
    
    

    oracle-database-preinstall-19c 软件包会安装必要的软件包,并在 /etc/sysctl.conf 文件中创建 oracle 用户和条目。

  8. 重置 oracle 用户的密码。

    
     passwd oracle
    
    
  9. 为 Oracle ASM 安装以下软件包:

    • oracleasm-support
    • kmod-oracleasm
    
     yum install oracleasm-support
     yum install kmod-oracleasm
    
    
  10. 通过更新 /etc/selinux/config 文件停用 SELinux

    
     vi /etc/selinux/config
    
     # This file controls the state of SELinux on the system.
     # SELINUX= can take one of these three values:
     #     enforcing - SELinux security policy is enforced.
     #     permissive - SELinux prints warnings instead of enforcing.
     #     disabled - No SELinux policy is loaded.
     SELINUX=disabled
     # SELINUXTYPE= can take one of three values:
     #     targeted - Targeted processes are protected,
     #     minimum - Modification of targeted policy. Only selected processes are protected.
     #     mls - Multi Level Security protection.
     SELINUXTYPE=targeted
    
    
  11. 停止并停用防火墙。

    
     systemctl stop firewalld.service
     systemctl disable firewalld
    
    
  12. 配置 NTP。

    1. 安装 NTP 软件包。

      
       yum install ntp
      
      
    2. 启动 ntpd 服务。

      
       systemctl start ntpd
      
      
    3. 更新 /etc/ntp.conf 文件。

      在本例中,我们会与堡垒主机(即 10.x.x.x)同步。它也可以是您的内部 NTP 服务器。192.x.x.x 是您的裸金属解决方案服务器的 IP 地址。

      
      vi /etv/ntp.conf
      
      restrict 192.x.x.x mask 255.255.255.0 nomodify notrap
      server 10.x.x.x prefer
      
      
    4. 更新 NTP 服务器以开始同步。

       ntpdate -qu SERVER_NAME
      
  13. 如果 avahi-daemon 正在运行,请将其停止并停用。

    
     systemctl status avahi-daemon
     ● avahi-daemon.service - Avahi mDNS/DNS-SD Stack
       Loaded: loaded (/usr/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled)
       Active: active (running) since Mon 2021-08-09 07:51:26 UTC; 23h ago
     Main PID: 2543 (avahi-daemon)
       Status: "avahi-daemon 0.6.31 starting up."
         Tasks: 2
       CGroup: /system.slice/avahi-daemon.service
               ├─2543 avahi-daemon: running [at-2811641-svr001.local]
               └─2546 avahi-daemon: chroot helper
    
     systemctl stop avahi-daemon
     Warning: Stopping avahi-daemon.service, but it can still be activated by:
       avahi-daemon.socket
    
     [root@at-2811641-svr001 ~]# systemctl disable avahi-daemon
     Removed symlink /etc/systemd/system/multi-user.target.wants/avahi-daemon.service.
     Removed symlink /etc/systemd/system/sockets.target.wants/avahi-daemon.socket.
     Removed symlink /etc/systemd/system/dbus-org.freedesktop.Avahi.service.
    
     systemctl status avahi-daemon
     ● avahi-daemon.service - Avahi mDNS/DNS-SD Stack
       Loaded: loaded (/usr/lib/systemd/system/avahi-daemon.service; disabled; vendor preset: enabled)
       Active: inactive (dead) since Tue 2021-08-10 07:16:28 UTC; 36s ago
     Main PID: 2543 (code=exited, status=0/SUCCESS)
    
    
  14. 创建 Oracle 主目录和 Grid 主目录。

    
     mkdir -p /apps/grid/19.3.0/gridhome_1
     mkdir -p /apps/grid/gridbase/
    
     mkdir -p /apps/oracle/product/19.3.0/dbhome_1
    
     chmod -R 775 /apps/
     chown -R oracle:oinstall /apps/
    
    
  15. 在第一个节点上,执行以下操作:

    1. 下载 Oracle Grid Infrastructure 映像文件。
    2. Oracle 用户身份将下载的文件复制到 Grid 主目录。
    3. Oracle 用户身份提取 Oracle Grid Infrastructure 映像文件。
    
     cp LINUX.X64_193000_grid_home.zip /apps/grid/19.3.0/gridhome_1/
     cd /apps/grid/19.3.0/gridhome_1/
     unzip LINUX.X64_193000_grid_home.zip
    
    
  16. 在任一节点上,为 Oracle 用户设置无密码 SSH。

    
     cd /apps/grid/19.3.0/gridhome_1/deinstall
    
     ./sshUserSetup.sh -user oracle -hosts "at-2811641-svr001 at-2811641-svr002" -noPromptPassphrase -confirm -advanced
    
    
  17. 在任一节点上,以根用户身份从 Grid 主目录安装 cvuqdisk RPM 软件包。

    
     rpm -qa cvuqdisk
    
     cd /apps/grid/19.3.0/gridhome_1/cv/rpm/
    
     rpm -iv cvuqdisk-1.0.10-1.rpm
    
     Preparing packages...
     Using default group oinstall to install package
     cvuqdisk-1.0.10-1.x86_64
    
     rpm -qa cvuqdisk
    
     cvuqdisk-1.0.10-1.x86_64
    
    

配置 Oracle ASM

如需配置 Oracle ASM,请以根用户身份执行以下步骤:

  1. 在任一节点上,标识您要用于 Oracle ASM 的所有共享 LUN。

     multipath -ll
    
  2. 在任一节点上,使用 fdiskgdisk 在所有共享设备中创建分区。

     fdisk /dev/mapper/DISK_WWID
    

    替换以下内容:

    • DISK_WWID:磁盘的 WWID。

    示例输出如下所示:

     fdisk /dev/mapper/3600a098038314343753f4f723154594e
    
     Welcome to fdisk (util-linux 2.23.2).
    
     Changes will remain in memory only, until you decide to write them. Be careful
     before using the write command.
    
     Device does not contain a recognized partition table Building a new DOS
     disklabel with disk identifier 0xf7f8fd23.
    
     The device presents a logical sector size that is smaller than the physical
     sector size. Aligning to a physical sector (or optimal I/O) size boundary is
     recommended, or performance may be impacted.
    
     Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4
     free) e extended Select (default p): p Partition number (1-4, default 1): First
     sector (2048-2147518463, default 2048): Using default value 2048 Last sector,
     +sectors or +size{K,M,G} (2048-2147518463, default 2147518463): Using default
     value 2147518463 Partition 1 of type Linux and of size 1 TiB is set
    
     Command (m for help): w The partition table has been altered!
    
     Calling ioctl() to re-read partition table.
    
     WARNING: Re-reading the partition table failed with error 22: Invalid argument.
     The kernel still uses the old table. The new table will be used at the next
     reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
    
     fdisk -l /dev/mapper/3600a098038314343753f4f723154594e
    
     Disk /dev/mapper/3600a098038314343753f4f723154594e: 1099.5 GB, 1099529453568 bytes,2147518464 sectors
     Units = sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 4096 bytes
     I/O size (minimum/optimal): 4096 bytes / 65536 bytes
     Disk label type: dos
     Disk identifier: 0xf7f8fd23
    
                                             Device Boot      Start         End      Blocks          Id  System
     /dev/mapper/3600a098038314343753f4f723154594e1            2048  2147518463  1073758208          83  Linux
    
  3. 运行 partprobe 以使所有新分区都显示出来。

     partprobe
    
  4. 在两个节点上,配置 Oracle ASM。

     oracleasm configure -i
     Configuring the Oracle ASM library driver.
    
     This will configure the on-boot properties of the Oracle ASM library
     driver.  The following questions will determine whether the driver is
     loaded on boot and what permissions it will have.  The current values
     will be shown in brackets ('[]').  Hitting <ENTER> without typing an
     answer will keep that current value.  Ctrl-C will abort.
    
     Default user to own the driver interface []: oracle
     Default group to own the driver interface []: oinstall
     Start Oracle ASM library driver on boot (y/n) [n]: y
     Scan for Oracle ASM disks on boot (y/n) [y]: y
     Writing Oracle ASM library driver configuration: done
    
  5. 在两个节点上,将参数 ORACLEASM_SCANORDER 的值设置为 dm,并将 ORACLEASM_SCANEXCLUDE 的值设置为 sd,因为裸金属解决方案服务器使用多路径设备。

     vi /etc/sysconfig/oracleasm
    
     ORACLEASM_SCANORDER="dm"
     ORACLEASM_SCANEXCLUDE="sd"
    
  6. 在两个节点上,验证 Oracle ASM 配置。

    
     oracleasm configure
     ORACLEASM_ENABLED=true
     ORACLEASM_UID=oracle
     ORACLEASM_GID=oinstall
     ORACLEASM_SCANBOOT=true
     ORACLEASM_SCANORDER="dm"
     ORACLEASM_SCANEXCLUDE="sd"
     ORACLEASM_SCAN_DIRECTORIES=""
     ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
    
    
  7. 在两个节点上,启动 oracleasm

    
     oracleasm init
    
     Creating /dev/oracleasm mount point: /dev/oracleasm
     Loading module "oracleasm": oracleasm
     Configuring "oracleasm" to use device physical block size
     Mounting ASMlib driver filesystem: /dev/oracleasm
    
    
  8. 在两个节点上,检查 oracleasm 的状态。

    
     oracleasm status
    
     Checking if ASM is loaded: yes
     Checking if /dev/oracleasm is mounted: yes
    
    
  9. 在任一节点上,在多路径分区设备上创建 Oracle ASM 磁盘。

     oracleasm createdisk OCR /dev/mapper/DISK_WWID
    

    替换以下内容:

    • DISK_WWID:磁盘的 WWID。

    示例输出如下所示:

    
     oracleasm createdisk OCR /dev/mapper/3600a098038314343753f4f723154594e1
     Writing disk header: done
     Instantiating disk: done
    
    
  10. 在第一个节点上,列出磁盘名称。

     oracleasm listdisks
    

    示例输出如下所示:

    
    DATA01
    DATA02
    DATA03
    DATA04
    DATA05
    DATA06
    FRA01
    FRA02
    FRA03
    OCR
    
    
  11. 在第二个节点上,列出在第一个节点上被标记为 ASMLIB 磁盘的磁盘。

     oracleasm scandisks
    

    示例输出如下所示:

    
    Reloading disk partitions: done
    Cleaning any stale ASM disks...
    Scanning system for ASM disks...
    Instantiating disk "DATA01"
    Instantiating disk "DATA06"
    Instantiating disk "DATA04"
    Instantiating disk "OCR"
    Instantiating disk "DATA05"
    Instantiating disk "FRA01"
    Instantiating disk "DATA03"
    Instantiating disk "FRA03"
    Instantiating disk "FRA02"
    Instantiating disk "DATA02"
    
  12. 在第二个节点上,列出磁盘名称。

     oracleasm listdisks
    

    示例输出如下所示:

    oracleasm listdisks
    DATA01
    DATA02
    DATA03
    DATA04
    DATA05
    DATA06
    FRA01
    FRA02
    FRA03
    OCR
    
    

    如果扫描后磁盘未显示在第二个节点中,请运行 partprobe 命令以使分区可见。

执行安装前检查

检查是否满足安装 Oracle Grid Infrastructure 的所有前提条件。在第一个节点上,运行 runcluvfy.sh 脚本。

   
   ./runcluvfy.sh stage -pre crsinst -n at-2811641-svr001,at-2811641-svr002 -verbose
   

如果任何前提条件未满足,请先解决这些问题,然后再继续安装。

安装 Oracle RAC

在下载并解压缩 Oracle GRID Infrastructure 映像文件的第一个节点上,执行以下步骤:

  1. 通过 VNC 查看器连接到裸金属解决方案服务器。
  2. 运行 gridSetup.sh 脚本。
  3. 选择配置选项页面上,选择 Oracle Grid Infrastructure for a new cluster(适用于新集群的 Oracle Grid Infrastructure),然后点击下一步
  4. 选择集群配置页面上,选择配置 Oracle 独立集群,然后点击下一步
  5. 网格即插即用信息页面上,执行以下操作:

    1. 选择创建本地 SCAN
    2. 输入集群名称。确保其少于 15 个字符。
    3. 输入 SCAN 名称。
    4. 输入 SCAN 端口。
    5. 点击下一步
  6. 如需添加第二个节点,请点击添加,然后执行以下操作:

    1. 输入第二个节点的公开主机名。
    2. 输入第二个节点的虚拟主机名。
    3. 点击确定
  7. 指定网络接口使用情况页面上,执行以下操作:

    1. 对于每个接口,在“用途”列中选择用途类型。 对于专用接口,请选择 ASM 和专用
    2. 点击下一步
  8. 存储选项信息页面上,选择 Oracle Flex ASM for storage(用于在 Oracle ASM 中存储 OCR 文件和投票磁盘文件),然后点击下一步

  9. 创建 Grid Infrastructure Management 代码库中,选择 Yes(是),然后点击 Next(下一步)。

    此步骤会创建 Grid Infrastructure Management Repository (GIMR)。

  10. Grid Infrastructure Management Repository option 页面上,选择 No,因为我们不想为 GIMR 创建单独的磁盘组。

  11. 创建 ASM 磁盘组页面上,执行以下操作:

    1. 输入磁盘组的名称。
    2. 点击更改发现路径,然后输入指向 Oracle ASM 磁盘的正确发现路径。

      确保将设备映射到多路径,这样即使一条路径发生故障,您的 Oracle ASM 磁盘也能正常运行。

  12. 指定 ASM 密码页面上,执行以下操作:

    1. 选择为这些账号使用相同的密码
    2. 输入并确认密码。
    3. 点击下一步
  13. 故障隔离支持页面上,选择不使用智能平台管理接口 (IPMI),然后点击下一步

  14. 指定管理选项页面上,点击下一步,因为我们不会使用 Oracle Enterprise Manager 配置 Oracle Grid Infrastructure。

  15. 特权操作系统组页面上,执行以下操作:

    1. 对于所有 Oracle ASM 权限,请选择 oinstall。您还可以使用 asmdbaasmoper
    2. 点击下一步
  16. 指定安装位置页面上,指定 Oracle 基础架构,然后点击下一步

  17. 如果您有 root 密码,或者 oracle 用户具有 sudo 权限,则可以自动执行 root 脚本。不过,在本指南中,我们将手动运行这些脚本。因此,在根脚本执行页面上,点击下一步

  18. 执行前提条件检查页面上,执行以下操作:

    1. 修正显示的所有失败问题。

      如果您已按照执行安装前检查部分中所述的方式修复了在执行 runcluvfy.sh 脚本时发现的所有失败问题,则可以期待顺利安装。

    2. 修正失败问题后,点击重新检查,将失败问题的状态更新为已成功

    3. 点击下一步

  19. 查看摘要,然后点击安装

  20. 安装提示会要求您在两个节点上运行根脚本。首先,在第一个节点上运行脚本,然后在第二个节点上运行脚本。

    
     /apps/grid/oraInventory/orainstRoot.sh
     /apps/grid/19.3.0/gridhome_11/grid/root.sh
    
    
  21. Finish(完成)窗口显示后,点击 Close(关闭)。

执行安装后步骤

Oracle Grid Infrastructure 安装完成后,请按以下步骤操作:

  1. 安装和配置 Oracle 数据库软件。

    对于 RAC 安装,请选择仅安装软件安装选项。

    如需了解如何安装 Oracle 数据库软件,请参阅博客:分步安装和配置适用于 RAC 数据库的 Oracle 19c 二进制文件

  2. 创建 Oracle ASM 磁盘组。

    1. /etc/oratab 文件中为 Oracle ASM 实例创建条目。

      
      vi /etc/oratab
      
      +ASM1:/apps/grid/19.3.0/gridhome_1:N
      
      
    2. 为 Oracle ASM 实例设置 ORACLE_SIDORACLE_HOME 变量,并连接到该实例。

      
      . oraenv
      ORACLE_SID = [oracle] ? +ASM1
      The Oracle base has been set to /apps/grid/gridbase
      
      sqlplus / as sysasm
      
      SQL> select INSTANCE_NAME,STATUS from v$instance;
      
      INSTANCE_NAME    STATUS
      ---------------- ------------
      +ASM1           STARTED
      
      
    3. 检查要添加的磁盘的 HEADER_STATUS 是否为 PROVISIONED

      
      SQL> select HEADER_STATUS,STATE,TOTAL_MB/1024,path from v$asm_disk;
      
      HEADER_STATUS.      STATE             PATH
      ------------ -------- ------------- -------------------------
      PROVISIONED            NORMAL       /dev/oracleasm/disks/DAT01
      
      PROVISIONED             NORMAL      /dev/oracleasm/disks/DATA02
      
      MEMBER              NORMAL       /dev/oracleasm/disks/OCR
      
      
    4. 通过一个节点创建磁盘组。

      
      SQL> create diskgroup DATA external redundancy disk '/dev/oracleasm/disks/DATA01','/dev/oracleasm/disks/DATA02';
      Diskgroup created.
      
      SQL> select name, state, type from v$asm_diskgroup;
      
      NAME             STATE      TYPE
      ------------------------------
      OCR           MOUNTED      EXTERN
      DATA            MOUNTED    EXTERN
      
      
    5. 在另一个节点上,登录 Oracle ASM 实例并挂载磁盘组。

      
      SQL> select name, state, type from v$asm_diskgroup;
      
      NAME                 STATE       TYPE
      -------------------- ----------- ------
      DATA                 DISMOUNTED
      OCR                  MOUNTED     EXTERN
      
      SQL> alter diskgroup DATA mount;
      
      Diskgroup altered.
      
      SQL> select name, state, type from v$asm_diskgroup;
      
      NAME                           STATE       TYPE
      ------------------------------ ----------- ------
      OCR                            MOUNTED     EXTERN
      DATA                           MOUNTED     EXTERN
      
      
  3. 使用 Oracle 数据库配置助理 (DBCA) 创建 RAC 数据库。

    确保您选择数据库类型Real Application Cluster Database

    如需查看相关说明,请参阅 Oracle 文档

RAC 数据库安装已完成,可以使用了。

后续步骤