在 Bare Metal 解決方案上安裝 Oracle RAC

本頁說明如何在 Bare Metal 解決方案伺服器上安裝 Oracle Real Application Clusters (RAC)。

部署作業

在本指南中,我們會建立部署作業,其中包含在 Bare Metal 解決方案伺服器上安裝的 Oracle RAC 19c。我們會建構一個含有資料庫的兩節點 RAC。

事前準備

  • 請務必佈建 RAC 所需的基礎架構。這包括兩個節點、共用儲存空間和專用磁碟區,用於代管 Oracle 主目錄。
  • 本指南將說明如何透過 GUI 安裝程序,如果您也想使用 GUI 安裝程序,請按照 Oracle VNC 設定指南,在其中一個節點上設定虛擬網路運算 (VNC)。
  • 建立本機掛接點 /apps,以便代管 Oracle 主機和 Grid 主機目錄。

安裝 RAC

在 Bare Metal 解決方案上安裝 RAC 的步驟如下:

  1. 為 RAC 安裝作業準備節點
  2. 設定 Oracle ASM
  3. 執行安裝前檢查
  4. 安裝 Oracle RAC
  5. 執行安裝後步驟

準備 RAC 安裝節點

除非另有說明,否則請在兩個節點上執行下列步驟:

  1. 請使用下列 RAC IP 位址更新 /etc/hosts 檔案:

    • 公開 IP 位址
    • 私人 IP 位址
    • 虛擬 IP 位址
    • SCAN 虛擬 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 位址和 SCAN 虛擬 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 是 Bare Metal 解決方案伺服器的 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,因為 Bare Metal Solution 伺服器使用多路徑裝置。

     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 Viewer 連線至 Bare Metal 解決方案伺服器。
  2. 執行 gridSetup.sh 指令碼。
  3. 在「Select configuration option」頁面上,選取「Oracle Grid Infrastructure for a new cluster」,然後按一下「Next」
  4. 在「Select cluster configuration」(選取叢集設定)頁面上,選取「Configure an Oracle standalone cluster」(設定 Oracle 獨立叢集),然後按一下「Next」(下一步)
  5. 在「Grid plug and play information」頁面上,執行下列操作:

    1. 選取「建立本機 SCAN」
    2. 輸入叢集名稱。請確認名稱長度不超過 15 個半形字元。
    3. 輸入 SCAN 名稱。
    4. 輸入 SCAN 通訊埠。
    5. 點按「Next」
  6. 如要新增第二個節點,請按一下「新增」,然後執行下列操作:

    1. 輸入第二個節點的公開主機名稱。
    2. 輸入第二個節點的虛擬主機名稱。
    3. 按一下 [確定]
  7. 在「指定網路介面用途」頁面中,執行下列操作:

    1. 針對每個介面,在「用途」欄中選取用途類型。如要使用私人介面,請選取「ASM & Private」
    2. 點按「Next」
  8. 在「儲存空間選項資訊」頁面上,選取「Oracle Flex ASM for storage」,在 Oracle ASM 中儲存 OCR 檔案和投票磁碟檔案,然後按一下「Next」

  9. 在「Create Grid Infrastructure Management Repository」(建立 Grid Infrastructure Management Repository) 頁面上,選取「Yes」,然後按一下「Next」(下一步)

    這個步驟會建立 Grid Infrastructure Management Repository (GIMR)。

  10. 在「Grid Infrastructure Management Repository option」頁面中,選取「No」,因為我們不想為 GIMR 建立單獨的磁碟群組。

  11. 在「Create ASM disk group」(建立 ASM 磁碟群組) 頁面中執行下列操作:

    1. 輸入磁碟群組的名稱。
    2. 按一下「Change discovery path」,然後輸入 Oracle ASM 磁碟的正確探索路徑。

      請確認裝置已對應至多路徑,這樣即使其中一個路徑發生故障,Oracle ASM 磁碟仍會正常運作。

  12. 在「指定 ASM 密碼」頁面中執行下列操作:

    1. 選取「為這些帳戶使用相同的密碼」
    2. 輸入並確認密碼。
    3. 點按「Next」
  13. 在「故障隔離支援」頁面上,選取「不要使用智慧型平台管理介面 (IPMI)」,然後按一下「下一步」

  14. 由於我們並未使用 Oracle Enterprise Manager 設定 Oracle Grid Infrastructure,因此請在「指定管理選項」頁面中按一下「Next」

  15. 在「特權作業系統群組」頁面中執行下列操作:

    1. 針對所有 Oracle ASM 權限,請選取「oinstall」。您也可以使用 asmdbaasmoper
    2. 點按「Next」
  16. 在「Specify installation location」(指定安裝位置) 頁面中指定 Oracle 基地,然後按一下「Next」(下一步)

  17. 如果您有根密碼,或是 oracle 使用者具備 sudo 權限,系統就能自動執行根指令碼。不過,在本指南中,我們會手動執行指令碼。因此,請在「Root script execution」頁面中按一下「Next」

  18. 在「Perform prerequisite checks」頁面中,執行下列操作:

    1. 修正顯示的任何失敗問題。

      如果您已修正執行 runcluvfy.sh 指令碼時發現的所有失敗問題,如執行安裝前檢查一節所述,您可以期待完整的安裝作業。

    2. 修正失敗問題後,請按一下「再次檢查」,將失敗狀態更新為「成功」

    3. 點按「Next」

  19. 查看摘要,然後按一下「安裝」

  20. 安裝提示會要求您在兩個節點上執行根指令碼。首先,請在第一個節點上執行指令碼,然後在第二個節點上執行。

    
     /apps/grid/oraInventory/orainstRoot.sh
     /apps/grid/19.3.0/gridhome_11/grid/root.sh
    
    
  21. 「完成」視窗一出現,請按一下「關閉」

執行安裝後步驟

安裝 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_STATUSPROVISIONED

      
      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 Database Configuration Assistant (DBCA) 建立 RAC 資料庫。

    請務必將「資料庫類型」設為「Real Application Cluster Database」

    如需操作說明,請參閱 Oracle 說明文件

RAC 資料庫安裝作業已完成,可供使用。

後續步驟