2022年1月7日 星期五

7. 安裝 Grid Infrastructure

安裝 Grid Infrastructure 之前,需要先做好如下準備:


1. 硬體與作業系統須符合 Grid Infrastructure 安裝需求,例如安裝 11g 的 Grid Infrastructure 要求作業系統至少為 Linux 4 update 7 以上 、 實體記憶體需 1.5G 以上 、 /tmp 空間至少 1G ;安裝 19c 的 Grid Infrastructure 至少需 Linux 7 以上 、實體記憶體需 8G 以上 、 /tmp 至少 1G 。除此之外,作業系統還必須設定符合 Grid Infrastructure 要求的 Kernel Parameters 與 RPM Packages ,這些需求每個版本不盡相同,可以參閱各版本的 Installation Guide ,或者是準備好作業系統光碟,等到安裝檢查步驟的提示再進行設定吧。 Oracle Linux 提供了 oracle-database-preinstall 這個 rpm ,我們可以簡單安裝這個 rpm 就可以符合安裝的要求。


2. 每台 Server 除了本機 IP 外,另外需規劃出一組 vip 以及 private ip ,於 DNS 上面需註冊一組 SCAN NAME 並對應三組 IP ,這邊稱作 scan ip 。 scan ip 可設定一組於 /etc/hosts 代替 DNS ,但建議上還是使用 DNS 註冊較好。本機 IP 、 vip 與 private IP 必須寫入 /etc/hosts :

127.0.0.1       loopback localhost

192.168.49.11      dbgrid01

192.168.49.12      dbgrid02

10.0.0.1     dbgrid01-priv

10.0.0.2     dbgrid02-priv

192.168.49.111      dbgrid01-vip

192.168.49.112      dbgrid02-vip


3. 須設定 Shared Disk ,所有 Server 必須要可以同時存取這些 Disk ,這個部分需要由 Storage 相關人員協助完成。設定好之後,於作業系統上需將這些 Disk 的權限更改為 Grid Infrastructure 的使用者,由於在 Linux 系統上重開機之後, Disk 的權限會變更回 root ,因此必須透過 udev rule 的設定來保持 Disk 的權限不會異動,例如於 /etc/udev/rule.d 底下建立一個 99-oracle-asmdevices.rules , Disk 的權限應為 660 且擁有者為 grid:oinstall , 如果有設定 asmadmin 群組,則權限應為 grid:asmadmin 。

KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB956ac525-f35825ce", NAME="asm_disk1", OWNER="grid", GROUP="oinstall", MODE="0660"


這麼一來就可以確保重開機之後的 Disk 權限不會被變更。到了 Oracle 12.2 之後多了 AFD (ASM Filter Driver) 這個新功能,這個功能會先把 Disk 格式化為 ASM Disk ,也會保護這些 ASM Disk 的表頭不會被異動,避免人為的疏失導致 ASM Disk 不可用,除此之外, AFD 也會自行設定一組 udev rule 來維持 ASM Disk 的權限。自 Oracle 19c 開始, AFD 可以透過 asmca 在建立 Disk Group 的介面進行勾選,之後在 Disk Group 建立的過程中就會自行設定了,使用了 AFD 我們就不需要再自行設定 udev rule 了。


4. 規劃好放置 OCR / Voting Disk 的 Disk Group 空間,例如以 Oracle 12.2 來說,如果 Disk Group 設定為 External Redundancy ,則需要一個 Disk 、 共 1.4G 以上; Normal Redundancy 需要 3 個 Disk 共 2.5G 以上; High Redundancy 需要 5 個 Disk 共 3.6G 以上,這邊要注意的是,在 12.2 的版本仍然是要求要建立 GIMR 的,而 GIMR 在 12.2 對於空間的要求非常大, External Redundancy 需要 37.6G ; Normal Redundancy 需要 75.5G ; High Redundancy 需要 113.4G ,如果沒有額外規劃一個 Disk Group 來存放 GIMR 的話,預設會存放在與 OCR 相同的 Disk Group 當中。


5. 建立 Grid Infrastructure 使用者,一般來說會建立一個名為 grid 的使用者,與 Database 的使用者 oracle 分開使用,也可以不區分只使用一個 oracle 使用者。 grid 這個使用者所賦予的 group 可以簡單的使用 oinstall 、 dba 就好,或者是使用完整的設定 asmadmin 、 asmoper 、 asmdba 這些群組 :

# groupadd -g 54321 oinstall

# groupadd -g 54322 dba

# groupadd -g 54327 asmdba

# groupadd -g 54329 asmadmin

# groupadd -g 54328 asmoper

# useradd -u 54422 -g oinstall -G dba,asmadmin,asmdba grid

# useradd -u 54421 -g oinstall -G dba,asmdba,asmoper oracle


使用者建立好之後,需設定使用者的 ulimited ,於 /etc/security/limits.conf 設定:

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536


6. 設定 Server 之間的 ssh authorization ,安裝過程中會使用 ssh 將軟體複製安裝到所有的節點之上,因此設定 ssh authorization 是必須的,這個部分可以在安裝前自行先設定好,或者是透過 Grid Infrastructure 的安裝步驟來幫助我們設定。

dbgrid01$ /home/grid>ssh-key_gen -t rsa

dbgrid01$ /home/grid>ssh-key_gen -t dsa

dbgrid02$ /home/grid>ssh-key_gen -t rsa

dbgrid02$ /home/grid>ssh-key_gen -t dsa

(於兩台 Server 分別設定 ssh key)


dbgrid01$ /home/grid/.ssh>cat id_rsa.pub >> authorized_keys

dbgrid01$ /home/grid/.ssh>cat id_dsa.pub >> authorized_keys

dbgrid01$ ssh dbgrid02 cat ~/.ssh/id_rsa.pub >> authorized_keys

dbgrid01$ ssh dbgrid02 cat ~/.ssh/id_dsa.pub >> authorized_keys

dbgrid01$ scp authorized_keys dbgrid02:~/.ssh

(將兩台的 ssh key 加入並複製到另外一台)


dbgrid01$ ssh dbgrid01 date

dbgrid01$ ssh dbgrid02 date

dbgrid02$ ssh dbgrid01 date

dbgrid02$ ssh dbgrid02 date

(確認 ssh authorization 設定是否成功)


7. 設定 NTP ,如果沒有使用 NTP , Grid Infrastructure 有 ctss 這個 Daemon 來對 RAC 節點之間互相進行教時。


在準備好前置作業後,接下來就可以正式安裝 Grid Infrastructure ,準備好 XWindows 工具後,使用 grid 使用者於 Grid Infrastructure 的軟體目錄下執行 runInstaller 叫出安裝介面,在 Oracle 12.2 版本之後有所不同, 12.2 版本之後的軟體已經是包裝成完整的 Grid Home ,因此 12.2 之後必須把軟體解壓縮至要安裝的路徑底下,例如要安裝在 /u01/app/12.2.0/grid ,那麼就必須把軟體解壓縮至這個路徑底下,然後再執行 grid_setup.sh 呼叫出安裝介面。


這邊選擇 Configure Grid Infrastructure for a Cluster 進行 RAC 的安裝,在 12c 的版本之後,進一步的選擇 Configure an Oracle Standalone Cluster 作為 RAC 標準架構的安裝。


接下來就是要為這組 RAC 設定一個名稱 Cluster Name , Cluster Name 可以依自己的喜好進行命名; SCAN NAME 則是先前於 DNS 上面所註冊的名稱 ; SCAN PORT 則是設定將來 SCAN Listener 所用的 Port Number ,預設為 1521 :


如果沒有使用 GNS 架構,那麼 Configure GNS 這個部分不需要進行設定。


接下來要把需要安裝節點的 Server 成員加入設定,這邊要求節點間的 ssh 能夠互相信任溝通,如果沒有在前置作業先行設定 ssh authorization 的話,這邊也可以點選 ssh connectivity 讓系統自行幫我們進行設定:


12c 版本以上多了 HUB Node 與 LEAF Node 的概念, LEAF Node 代表可以不用直接存取 Shared Stroage 的節點,這邊標準安裝我們節點都是選擇 HUB Node 。


下一個步驟設定對外 Public 的網卡名稱以及網段,與對內 Private 的網卡名稱及網段:


在 12c 之後的版本,對內的網卡要選擇 ASM & Private 。


接下來要選擇所使用的 Storage Type ,建議使用 ASM :


如果是安裝 19c ,這邊可以選擇是否要建立 GIMR ,早期 Grid Infrastructure 安裝會自動建立 GIMR ,也就是會在 ASM 裡面建立一個名為 –MGMTDB 的 DB ,用途是用來存放 Cluster Health Monitor 與作業系統的監控資訊,在 19c 的版本可以選擇不要使用 GIMR ,因為如果要監控作業系統資訊,可以使用 OSWatcher 等工具,不需要經由 GIMR 來蒐集:


接下來要先建立一個 Disk Group 來存放 OCR ,這個步驟當中,在 19c 可以勾選是否使用 AFD :


之後使用 asmca 建立其它的 Disk Group 也可以勾選 AFD 來使用:


接下來的幾個步驟就是簡單的設定 ASM Instance 的 sys 使用者密碼、 ASM 管理者的作業系統群組,以及 Grid Infrastructure 的安裝路徑:


從 12c 之後,這邊可以選擇安裝過程中是否自動執行 root.sh 腳本,如果要讓系統自動執行的話,這邊需要提供 root 使用者的密碼:


接下來會進行安裝前檢查,如果有 RPM 未安裝以及相關 Kernel Parameter 沒有設置妥當的話,這邊會進行提示:


Fix & Check Again 按鈕可以讓系統自動幫我們修復 Kernel Parameter 與使用者 ulimited 的相關設定,這邊要注意的是,如果是修復使用者的 ulimited 設定,那麼修正後必須重新啟動這個安裝介面,系統檢查才會通過。不過有些檢查是無法讓系統自動修復的,例如有 RPM 未安裝,那麼此時就必須要自行安裝這些缺少的 RPM 才行。


安裝的最後一個步驟,系統會提示我們使用 root 使用者於每一個節點上執行 root.sh 腳本:


執行完 root.sh 之後別忘了返回繼續讓系統做完後續的設定:


最後的設定檢查結束後,便完成了 Grid Infrastructure 的安裝。


安裝完成後,可以使用 crsctl stat res –t 檢查相關服務是否正常:


安裝完 Grid Infrastructure 之後,接下來就可以在基於 RAC 的架構下安裝 Oracle Database 軟體,一般來說, Oracle Database 軟體的版本會與 Grid Infrastructure 相同,如果有不同版本的需求,那麼 Oracle Database 軟體的版本不可以大於 Grid Infrastructure ,例如 Grid Infrastructure 安裝的是 12c ,那麼 Oracle Database 軟體就只能安裝 12c 或是 12c 以下的版本。


基於 RAC 架構下的 Oracle Database 軟體安裝與一般的安裝過程沒有特別的差異,只有在一開始的時候需要將 RAC 所有的節點選入進來即可:


後續的步驟就不再贅述。


安裝完 Oracle Database 軟體之後,接下來就可以建立 RAC 資料庫,建立資料庫之前,可以先使用 asmca 建立資料庫所需的 Disk Group 。資料庫的建立一樣是使用 DBCA ,建立過程與建立一般 DB 沒有差異,只有一開始的時候需要將所有的節點選入進來:


在 RAC 架構下,資料庫的 SID 會自動加上編號,這邊只需設定 SID Prefix ,之後實際的 SID 會自動加上號碼,例如這邊 SID Prefix 設定的是 RDBA ,那麼建立好之後,節點一的 SID 就會是 RDBA1 ;節點二的 SID 則是 RDBA2 。


安裝至此,可以說是建立好了一套完整的 RAC 架構資料庫。



沒有留言:

張貼留言