VirtualBoxを用いてOracle DBのRAC（19c）を構築しよー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/e6c2c832-f500-b364-04e1-53fa68ad7f02.png)

上記のようなRAC構成をVirtualBoxで構築します

RAC（Real Application Cluster）って何だっけ？という疑問に端的に答えるなら、
複数のマシンでデータベースを構築することです
複数のマシンでつくることの利点としては、"高可用性"と"拡張性"が提供されることです

ではでは作っていきましょー

なお、備忘録に近いので、雑です

## ホストOS（パソコン）

|名称|バージョン情報|備考|
|-----------|------------|------------|
|ＯＳ|Windows 10 Pro|リソースに余裕があるパソコンが望ましい|
|仮想化ソフトウェア|Oracle VM VirtualBox 6.1| 仮想環境を構築する|

## ゲストOS

##### 仮想マシン概要

|仮想マシン名|ホスト名OS|liunxバージョン|メモリ|ディスク領域|CPU数|備考|
|-----------|------------|------------|------------|------------|------------|------------|
|rac1      |rac1.oracle19c.jp|Oracle Linux 7.9|10G|100G|4|推奨としては4GB以上|
|rac2      |rac2.oracle19c.jp|Oracle Linux 7.9|10G|100G|4|推奨としては4GB以上|
|dns        |dns.oracle19c.jp|Oracle Linux 7.9|8G|100G|4|快適に操作したい為、メモリとCPUは多めにしているが、メモリ:1G、CPU:2程度で問題なし|
	
##### ネットワーク構成

|ホスト名OS|接続名|IPアドレス|ネットワーク|用途|備考|
|-----------|------------|------------|------------|------------|------------|
|rac1.oracle19c.jp|enp0s8|192.168.56.101|パブリック|外部通信|
|                  |enp0s9|192.168.100.101|プライベート|ノード間通信|
|                  |enp0s10|192.168.200.101|プライベート|ノード間通信|
|rac2.oracle19c.jp|enp0s8|192.168.56.102|パブリック|外部通信|
|                  |enp0s9|192.168.100.102|プライベート|ノード間通信|
|                  |enp0s10|192.168.200.102|プライベート|ノード間通信|
|dns.oracle19c.jp|enp0s8|192.168.56.254|パブリック|外部通信|

##### scan構成

|SCAN名|IPアドレス|用途|
|-----------|------------|------------|
|scan.oracle19c.jp|192.168.56.201|SCAN用VIP|
|                  |192.168.56.202|SCAN用VIP|
|                  |192.168.56.203|SCAN用VIP|
		
## 仮想マシン作成

まずはコピー元（クローン元）用の仮想マシン（ゲストOS）を1つ作成します

そもそもゲストOSどうやって作るんだっけ？の人は以下記事を参考に構築下さい
※OSの設定完了まで行って下さい
※ディスクサイズは一度設定したら変更が手間なので100Gで作っておくこと推奨
※メモリ・CPUは後で容易に変更可能
https://qiita.com/FiftyStorm/items/9d4c2142b7aa0c212afc

ゲストOS作成完了しましたか？

できたらそのゲストOSをクローンして、"rac1"、"rac2"、"dns"を作成しましょー

コピーしたい仮想マシンを選択した上で"クローン"ボタンを押下
"名前"を入力、"MACアドレスのポリシー"は"すべてのネットワークアダプターでMACアドレスを生成"を選択
そして"次へ"を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/77444dd5-2bcd-5334-1731-8d474837a6d7.png)

"すべてのクローン"を選択し"次へ"を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/ede34da9-fa56-5d74-d301-d92a8f9d0183.png)

"現在のマシンの状態"を選択し"クローン"を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/f10bd9cf-7feb-b158-8c2d-cd2d1e73e008.png)

## VirtualBoxの諸々の設定を実施

"rac1","rac2"を以下の画像のように設定をする
※OSはシャッドダウンしないと設定できません
※"rac1","rac2"の内部ネットワークのアダプター3の名前は同じ名前にして下さい
※"rac1","rac2"の内部ネットワークのアダプター4の名前は同じ名前にして下さい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/dcee0b3c-53ff-c0d4-b11c-93ae30a6952b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/854366db-0558-6267-745b-638c25456e28.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/d5f45756-6f3f-2328-50ef-938965aeb004.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/5af23267-56cf-647c-5bac-7ddd4fce4ae9.png)

#### 共有フォルダ設定

"rac1"のみを以下の画像のように設定をする
※"Oracle Grid Infrastructure"と"Oracle Database"のモジュール配置先

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/191cd300-4d51-596b-ae54-5f7e3735ba36.png)

## 共有ストレージ追加

仮想マシン（rac1、rac2）で使用可能な共有ストレージを追加
下記の内容の通りホストOS上に仮想ディスクを作成し、ゲストOSに対応させる

|配置先（ホストOS）|仮想ディスク名（ホストOS）|デバイス名（ゲストOS）|サイズ|
|-----------|------------|------------|------------|
|D:\VBox\SharedDisk|SharedDisk1.vdi|sdb|50G|
||SharedDisk2.vdi|sdc|50G|
||SharedDisk3.vdi|sdd|50G|
||SharedDisk4.vdi|sde|50G|
||SharedDisk5.vdi|sdf|50G|
||SharedDisk6.vdi|sdg|50G|

"rac1"で仮想ディスクの作成と設定を行い、"rac2"では設定のみ行う
"rac1"のストレージ設定から"ハードディスクの追加"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/16358bef-6af1-18df-0bcf-36d61bad8d58.png)

"作成"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/ce9c0387-aa1e-7ea4-c2d8-eae9c03952db.png)

"VDI"を選択し"次へ"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/ed269591-ba42-2e8b-c654-debd54369e05.png)

"固定サイズ"を選択し"次へ"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/0efc36f5-1972-7d14-6743-732f237d9786.png)

"D:\VirtualBox\SharedDisk\SharedDisk1.vdi"と"50.00GB"を入力し"作成"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/ce699c8b-cf04-b786-ae5f-d821d4a36a41.png)

同様の手順で以下を作成

```
D:\VirtualBox\SharedDisk\SharedDisk2.vdi
D:\VirtualBox\SharedDisk\SharedDisk3.vdi
D:\VirtualBox\SharedDisk\SharedDisk4.vdi
D:\VirtualBox\SharedDisk\SharedDisk5.vdi
D:\VirtualBox\SharedDisk\SharedDisk6.vdi
```

仮想メディアマネージャーを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/7a670900-e975-36a9-3bbc-6b1fde482c73.png)

"SharedDisk1.vdi"に対して"タイプ：共有可能"を選択し、"適用"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/7796770d-5445-4f1c-d672-bb832eb49cd4.png)

同様の手順で以下に対しても"タイプ：共有可能"を選択し、"適用"を押下

```
SharedDisk2.vdi
SharedDisk3.vdi
SharedDisk4.vdi
SharedDisk5.vdi
SharedDisk6.vdi
```

"rac1"のストレージ設定で"共有可能"に変更されていることを確認し、変更を反映させるため"OK"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/b86be3ab-efed-e87f-7667-f1b8b2df35bf.png)

"rac2"のハードディスクで以下を選択する

```
SharedDisk1.vdi
SharedDisk2.vdi
SharedDisk3.vdi
SharedDisk4.vdi
SharedDisk5.vdi
SharedDisk6.vdi
```

"rac2"のストレージ設定から"ハードディスクの追加"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/16358bef-6af1-18df-0bcf-36d61bad8d58.png)

"SharedDisk1.vdi"～"SharedDisk6.vdi"を選択し、"選択"を押下
※複数選択できません

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/aa125ffb-6dd9-06d6-b5e4-5ee96baf2cc9.png)

"OK"を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/3009b9f3-6732-1f5d-c962-eb8782538b69.png)

## DNSサーバー設定

仮想マシン（dns）にて、DNSサーバーの設定を行います
作業は、rootユーザーで行います

|ホスト名OS|デバイス名|メソッド|アドレス|ネットマスク|ゲートウェイ|自動接続|用途|
|-----------|-----------|------------|------------|------------|------------|------------|------------|
|dns.oracle19c.jp|enp0s8|手動|192.168.56.254|255.255.255.0|-|ON|DNSサーバー|

ホスト名を変更する

```
vi /etc/hostname
```
```
dns.oracle19c.jp
```

nmcliコマンドでenp0s8のネットワーク設定を変更する

```
nmcli c modify enp0s8 ipv4.method manual ipv4.addresses 192.168.56.254/24 connection.autoconnect yes
```

設定内容を確認

```
nmcli d show enp0s8
```
```
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:9B:87:C8
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (接続済み)
GENERAL.CONNECTION:                     enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER:               オン
IP4.ADDRESS[1]:                         192.168.56.254/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.56.0/24, nh = 0.0.0.0, mt = 101
IP6.ADDRESS[1]:                         fe80::c986:31cd:7d66:d7c8/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 101
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255
```

hostsファイルを修正

```
vi /etc/hosts
```

以下を追記

```
192.168.56.101 rac1.oracle19c.jp rac1
192.168.56.102 rac2.oracle19c.jp rac2
192.168.56.111 rac1-vip.oracle19c.jp rac1-vip
192.168.56.112 rac2-vip.oracle19c.jp rac2-vip
192.168.56.201 scan.oracle19c.jp scan
192.168.56.202 scan.oracle19c.jp scan
192.168.56.203 scan.oracle19c.jp scan
192.168.56.254 dns.oracle19c.jp dns
```

enp0s3は不要なので、自動起動OFFにして、停止

```
nmcli c modify enp0s3 connection.autoconnect no
nmcli c down enp0s3
```

設定反映の為、再起動

```
reboot
```

dnsmasq を使用して DNS サーバーを構築
自動起動を有効化して、dnsmasqを起動
また、再起動します

```
systemctl enable dnsmasq.service
systemctl start dnsmasq.service
reboot
```
常に起動していることと自動起動が有効化されていることを確認

```
[root@dns ~]# systemctl status dnsmasq.service
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
   Active: active (running) since 水 2021-07-14 21:21:18 JST; 1min 29s ago
 Main PID: 1234 (dnsmasq)
    Tasks: 1
   CGroup: /system.slice/dnsmasq.service
           └─1234 /usr/sbin/dnsmasq -k

 7月 14 21:21:18 dns.oracle19c.jp systemd[1]: Started DNS caching server..
 7月 14 21:21:19 dns.oracle19c.jp dnsmasq[1234]: started, version 2.76 cachesize 150
 7月 14 21:21:19 dns.oracle19c.jp dnsmasq[1234]: compile time options: IPv6 GNU-getopt DBus no-i18n IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth nettlehash no-DNSSEC ...ect inotify
 7月 14 21:21:19 dns.oracle19c.jp dnsmasq[1234]: no servers found in /etc/resolv.conf, will retry
 7月 14 21:21:19 dns.oracle19c.jp dnsmasq[1234]: read /etc/hosts - 10 addresses
Hint: Some lines were ellipsized, use -l to show in full.
```

## Oracle Preinstallation RPMのインストール

rac1、rac2にて、rootユーザーで作業を行う

以下を実行

```
yum install oracle-database-preinstall-19c
```

oracle-database-preinstall-19c-verify を実行

```
export LANG=C
oracle-database-preinstall-19c-verify
```

## OSユーザー構成

rac1、rac2にて、rootユーザーで作業を行う

必要な OS グループを作成
※oinstall、dba、oper、backupdba、dgdba、kmdba、racdba は「Oracle Preinstallation RPM」で作成されている

```
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
```

gridユーザー作成と oracleユーザー修正

```
useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,racdba grid
usermod -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
```

oracleユーザーと gridユーザーのパスワードを設定

```
passwd oracle
passwd grid
```

必要なディレクトリを作成

```
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01
```

oracleユーザーとgridユーザーの.bash_profileを設定

```
# vi /home/oracle/.bash_profile
 
~下記を追記~
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1

# vi /home/grid/.bash_profile
 
~下記を追記~
umask 022
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
```

oracleユーザーとgridユーザーのリソース制限を設定

```
# vi /etc/security/limits.conf
 
~下記を追記~
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
 
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
```

ログインしたときにリソース制限が有効になるように、PAM認証の設定ファイルを修正

```
# vi /etc/pam.d/login
 
~下記を追記~
session required pam_limits.so
```

## システム時刻同期設定

chrony.confをリネーム

```
mv /etc/chrony.conf /etc/chrony.conf.org
```

## ネットワーク構成


|ホスト名OS|デバイス名|IPアドレス|メソッド|ネットマスク|ゲートウェイ|自動接続|DNSサーバー|用途|
|-----------|------------|------------|------------|------------|------------|------------|------------|------------|
|rac1.oracle19c.jp|enp0s8|192.168.56.101|手動|255.255.255.0|-|ON|192.168.56.254|外部通信|
|                  |enp0s9|192.168.100.101|手動|255.255.255.0|-|ON|-|ノード間通信|
|                  |enp0s10|192.168.200.101|手動|255.255.255.0|-|ON|-|ノード間通信|
|rac2.oracle19c.jp|enp0s8|192.168.56.102|手動|255.255.255.0|-|ON|192.168.56.254|外部通信|
|                  |enp0s9|192.168.100.102|手動|255.255.255.0|-|ON|-|ノード間通信|
|                  |enp0s10|192.168.200.102|手動|255.255.255.0|-|ON|-|ノード間通信|

rac1用のnmcliコマンド

```
nmcli c modify enp0s8 ipv4.method manual ipv4.addresses 192.168.56.101/24 ipv4.dns 192.168.56.254 connection.autoconnect yes
nmcli c add type ethernet ifname enp0s9 con-name enp0s9 ipv4.method manual ipv4.addresses 192.168.100.101/24 connection.autoconnect yes
nmcli c add type ethernet ifname enp0s10 con-name enp0s10 ipv4.method manual ipv4.addresses 192.168.200.101/24 connection.autoconnect yes
```

rac2用のnmcliコマンド

```
nmcli c modify enp0s8 ipv4.method manual ipv4.addresses 192.168.56.102/24 ipv4.dns 192.168.56.254 connection.autoconnect yes
nmcli c add type ethernet ifname enp0s9 con-name enp0s9 ipv4.method manual ipv4.addresses 192.168.100.102/24 connection.autoconnect yes
nmcli c add type ethernet ifname enp0s10 con-name enp0s10 ipv4.method manual ipv4.addresses 192.168.200.102/24 connection.autoconnect yes
```

設定を確認したい場合は以下コマンドを実行

```
nmcli c show
nmcli d show "デバイス名"
```

複数プライベート・ネットワークを使用する場合、rp_filterパラメータの設定が必要
2（緩慢モード）に設定
※rac1,rac2共通

```
# vi /etc/sysctl.d/99-sysctl.conf
 
~下記を記載~
net.ipv4.conf.enp0s9.rp_filter = 2
net.ipv4.conf.enp0s10.rp_filter = 2
```

変更した値を反映
※rac1,rac2共通

```
sysctl --system
```

hosts ファイルを修正
※rac1,rac2共通

```
# vi /etc/hosts
 
~下記を記載~
192.168.56.101 rac1.oracle19c.jp rac1
192.168.56.102 rac2.oracle19c.jp rac2
192.168.56.111 rac1-vip.oracle19c.jp rac1-vip
192.168.56.112 rac2-vip.oracle19c.jp rac2-vip
```

enp0s3は不要なので、自動起動OFFにして、停止
※rac1,rac2共通

```
nmcli c modify enp0s3 connection.autoconnect no
nmcli c down enp0s3
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/096b94aa-ae73-c064-2924-4045e3e0ea32.png)

## Oracle Grid Infrastructureのインストール

"rac1"を起動し、gridユーザーでログイン
共有フォルダー（前述したvirtualboxの設定が必要）をマウントするので、rootユーザーに切り替え
マウント先ディレクトリを作成して、共有フォルダーをマウント

```
mkdir /opt/image
mount -t vboxsf oracle19c /opt/image
```

Oracleソフトウェアが配置されているディレクトリに移動し、ファイルを確認
gridユーザーに戻る

```
cd /opt/image
ll
```

※virtualboxで共有フォルダで設定したホスト（パソコン）のディレクトリ（D:\Software\oracle19c
）に"LINUX.X64_193000_db_home.zip"と"LINUX.X64_193000_grid_home.zip"を配置しておく必要あり
※zipファイルは以下からダウンロード可能（オラクルID必要）
https://www.oracle.com/jp/database/technologies/oracle-database-software-downloads.html 

"rac1"にて、gridユーザーでインストール開始

```
env|grep ORA
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/19.3.0/grid
 
cd $ORACLE_HOME
pwd
/u01/app/19.3.0/grid
 
unzip /opt/image/LINUX.X64_193000_grid_home.zip
```

セットアップ起動

```
/u01/app/19.3.0/grid/gridSetup.sh
```

以下の画像の通り、設定していく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/6d691ea6-b6c5-f4ae-b16b-9da7ee70ad7d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/ae8df694-21e6-da01-aaf3-c7d9b48aad06.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/9511c8ea-6a47-9d68-1da8-6f683fd777e6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/89d25d74-13cb-b716-9cd4-8f795ba32cda.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/a151672b-60cd-9be0-5f56-b2454395047c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/4faf04cf-3eec-df9a-1a29-3feaec6a5029.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/8039cd19-f333-5994-205e-1a174cec0637.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/1785a802-98e4-06d1-2418-aef2d9c7daab.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/ac8f16a8-830b-4e59-7c9d-2ef3a048ad78.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/17beac2f-a8aa-b25c-d919-755222b135a2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/f84d074d-4eb3-2b12-97a3-eccd09116945.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/cfd69237-0b6f-ccca-f748-cb197077998e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/b0cdddde-38ed-4629-ea58-d22f314149aa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/659a4be4-0a08-ec38-d00f-2d0c926f7c34.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/40258d9b-9b56-8544-1c6e-e805c9d1bf82.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/9ba996fa-73f6-637d-63a3-cef2ec24d565.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/d2ae353c-878f-86df-f30f-ee597ed05fb5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/c1485dc2-04f4-a19b-48fe-ec23111a240f.png)

「修正および再チェック」をクリック
生成される修正スクリプトを実行する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/aa1c2a6b-629e-8d7f-8511-4fcdb65bb3d5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/7eb4e762-54cb-9132-12f4-811e5ed90cd7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/c5d302db-dd9e-cff5-1a05-6cf02d6fb588.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/cd4eaa9c-a8d8-7864-0094-5a014e1a73dc.png)

スワップサイズとRPMは今回は無視する為、"すべて無視"をチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/31cf8a91-8412-fc13-5431-4bc45baa77ea.png)

構成スクリプトの実行を促されたら、実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/eb63cd67-569d-df4d-6f16-1acac60655ca.png)

## Oracle Databaseのインストール

"rac1"にて、oracleユーザーでインストール

```
env|grep ORA
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
 
cd $ORACLE_HOME
pwd
/u01/app/oracle/product/19.3.0/dbhome_1
 unzip /opt/image/LINUX.X64_193000_db_home.zip
```

インストーラー起動

```
./runInstaller
```


以下の画像の通り実行していく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/bededd68-511e-4994-3c3b-e5c6c43613ca.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/d9cb5f6a-271d-07c6-c69c-a7618185a969.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/e2d4782a-49b4-4980-1899-0573e9add60f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/15e80db3-624c-7d83-1b05-0ac8a94b97ad.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/8c01fbf0-ec39-c0a6-160b-c0461f5108f2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/a189a4c4-8507-3cdf-927c-c55054d1bae9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/85235723-cbea-a8f9-cb90-ff09ec51df94.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/380e7b11-72bc-3af6-79df-69ecd15e9192.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/143d8060-f5e4-08f9-fb2e-51fe5b05a908.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/877da7be-baf8-0b15-68e1-361c9db25e59.png)

## ASMディスク・グループ作成

gridユーザーでASMCAを起動

```
/u01/app/19.3.0/grid/bin/asmca
```

以下の画像の通り実行していく

ディスクグループを選択し、作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/1cb66e8c-4aef-1e7c-f7bf-553041b5c85b.png)

画像の通り、設定してOKをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/ed1599a5-eb20-f6de-1d72-2b2fa83cc811.png)

終了をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/0f30ca84-ca2e-4877-ec1c-fd18d05b2a2d.png)

## データベース作成

oracleユーザーでDBCAを起動

```
/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbca
```

以下の画像の通り設定していく


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/1763dcc8-9896-aeb1-f4a6-11ce542c3204.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/417831eb-55fb-7976-7913-f2d4c93e4a8f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/6c8fe02e-5572-4666-1980-31faca568ac4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/6d25206d-f457-fcbe-fdf4-ffcb956eceb8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/809a913f-9f67-2246-4cf3-a9f9e963a539.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/ba7cda4f-0dae-b4cf-73c4-89eaa39c476c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/44226f65-5821-66d7-571c-079d4fa1e766.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/3fe62702-8a74-c85f-1ff6-c00e3cef2eee.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/7510aea9-844d-8585-fb15-4a3041c92e4e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/a2db30c9-7fcc-9955-efd4-e1d24f9caf49.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/8d957059-70c1-a176-5ee4-e8701d3a2a07.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/066a7134-db54-c51c-677d-d1455ad3ec7d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/f31642b4-abdd-325e-dd01-09e9dac9915a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/62a12a6c-55ec-dfe7-17be-c8ae5095b487.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/1d5c383e-a0cb-ffaa-5aff-1d942077c5d7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/d385b5f4-9f15-ae4f-12b1-906a9dc19fad.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/97c32694-fb95-fb13-4a8d-79891411bed7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/afac5dff-e0e7-74bc-cc21-3c9aba1b666c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/b9c10219-1bb9-53a4-b0d4-b75203d99324.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/b042feb9-be5d-02e5-d778-3552717067a5.png)

## 環境変数の設定

gridユーザーとoracleユーザーの環境変数を設定
"rac1"、"rac2"それぞれで設定

tmpディレクトリ作成

```
su - grid
mkdir $HOME/tmp
```

PMONより、ORACLE_SIDに設定する値を確認

```
ps -ef | grep pmon
grid      4585     1  0 14:44 ?        00:00:00 asm_pmon_+ASM1
oracle    8845     1  0 17:05 ?        00:00:00 ora_pmon_orcl_2
grid     22001 20168  0 17:30 pts/0    00:00:00 grep --color=auto pmon
```

.bash_profileを修正

```
vi .bash_profile
 
~下記を追記~
export TMPDIR=$HOME/tmp
export TEMP=$HOME/tmp
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:${PATH}
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG=JAPANESE_JAPAN.UTF8
export LANG=ja_JP.UTF-8
export ORACLE_SID=+ASM1
```

.bash_profileの修正を反映

```
. .bash_profile
```

tmpディレクトリ作成

```
su - oracle
mkdir $HOME/tmp
```

PMONより、ORACLE_SIDに設定する値を確認

```
$ ps -ef | grep pmon
grid      4585     1  0 14:44 ?        00:00:00 asm_pmon_+ASM1
oracle    8845     1  0 17:05 ?        00:00:00 ora_pmon_orcl_2
grid     22001 20168  0 17:30 pts/0    00:00:00 grep --color=auto pmon
```

.bash_profileを修正

```
$ vi .bash_profile
 
~下記を追記~
export TMPDIR=$HOME/tmp
export TEMP=$HOME/tmp
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:${PATH}
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG=JAPANESE_JAPAN.UTF8
export LANG=ja_JP.UTF-8
export ORACLE_SID=orcl_2
```

.bash_profileの修正を反映

同様にもう一方のノードでも環境変数の設定を行う

## データベースの稼働確認

以下の状態なら問題なし

接続

```
sqlplus / as sysdba
```

show con_name

```
CON_NAME
------------------------------
CDB$ROOT
``` 

SELECT inst_id, con_id, name, open_mode FROM gv$database ORDER BY inst_id, con_id

```
   INST_ID     CON_ID NAME                 OPEN_MODE
---------- ---------- -------------------- ------------
         1          0 ORCL                 READ WRITE
         2          0 ORCL                 READ WRITE
```

SELECT inst_id, con_id, instance_name, status FROM gv$instance ORDER BY inst_id, con_id; 

```
   INST_ID     CON_ID INSTANCE_NAME        STATUS
---------- ---------- -------------------- ---------
         1          0 orcl_1               OPEN
         2          0 orcl_2               OPEN
```

 
SELECT inst_id, con_id, name, open_mode FROM gv$pdbs ORDER BY inst_id, con_id;

```
    INST_ID     CON_ID NAME                 OPEN_MODE
---------- ---------- -------------------- ----------------
         1          2 PDB$SEED             READ ONLY
         1          3 PDB1                 READ WRITE
         2          2 PDB$SEED             READ ONLY
         2          3 PDB1                 READ WRITE
```

SCANを使用したPDB1への接続確認

```
sqlplus system/[PASSWORD]@scan.oracle19c.jp:1521/pdb1.oracle19c.jp
```

SCANを使用したORCLへの接続確認

```
$ sqlplus system/[PASSWORD]@scan.oracle19c.jp:1521/orcl.oracle19c.jp
```

## コマンド集

DBの停止（全ノードのリソース操作）　※rac1（root）で実行

```
/u01/app/19.3.0/grid/bin/srvctl stop database -d ORCL
```

CRSの停止（全ノードのリソース操作）※rac1（root）で実行

```
/u01/app/19.3.0/grid/bin/crsctl stop cluster -all
```

CRSリソースの状態確認（全ノードのリソース操作） ※rac1（root)で実行

```
/u01/app/19.3.0/grid/bin/crsctl stat res -t
```

CRSリソースの状態確認　※rac1＆rac2（root)で実行

```
/u01/app/19.3.0/grid/bin/crsctl check crs
```

crsが自動的に起動するようになっているか確認

```
cat /etc/oracle/scls_scr/rac1/root/crsstart
```

データベース起動＆状態確認　※rac1(root)で実施

```
/u01/app/19.3.0/grid/bin/srvctl start database -d ORCL
/u01/app/19.3.0/grid/bin/crsctl stat res -t
```

PDB起動

```
[rac1]
alter pluggable database all open;

[rac2]
shutdown immediate　←うまく起動しなかったので、一度落とした
startup
alter pluggable database all open;
```

その他

```
set lin 1000
set pages 100
col name for a20
SELECT inst_id, con_id, name, open_mode FROM gv$pdbs ORDER BY inst_id, con_id;

CREATE TABLE test (test VARCHAR2(10) NOT NULL);

usermod -aG wheel ユーザー名

systemctl disable avahi-daemon.service
systemctl stop avahi-daemon.service
```

## 参考サイト

Oracle LinuxにOracle Real Application Clusters 19c Enterprise Editionをインストールする
https://dbalone.com/oracle-rac-19c-ee-install

Oracle VM VirtualBox を用いた Oracle Real Application Clusters (RAC) 12c Release 1 環境の構築
https://www.oracle.com/a/tech/docs/raconvbox-db12101onol6u4-2080481-ja.pdf