📖

VirtualBoxにOracle Database 19c RACを構築(後編)

2024/03/20に公開

9. こちらの記事の続きです。

https://zenn.dev/db_tech/articles/920d1456750d95

10. Oracle Grid Infrastructureのインストール

10-1. ファイルの準備

node1のVMを起動します。

su - grid
$ cd /u01/app/19.3.0/grid/;pwd
$ ls -l /tmp/work/LINUX.X64_193000_grid_home.zip
$ unzip -q /tmp/work/LINUX.X64_193000_grid_home.zip -d /u01/app/19.3.0/grid/

10-2. cvuqdiskパッケージのインストール

Cluster Verification Utility (CVU)のために、cvuqdiskパッケージを両ノードにインストールします。rootに戻るのをお忘れなく。

まず、パッケージがインストールされているか確認します。

rpm -q cvuqdisk

インストールされていない場合は、以下の手順を実行します。

cd /u01/app/19.3.0/grid/cv/rpm;pwd
ls -l cvuqdisk*
export CVUQDISK_GRP=oinstall
rpm -ivh cvuqdisk-1.0.10-1.rpm
rpm -q cvuqdisk

パッケージをnode2に送ります。
※先にnode2でrpm -q cvuqdiskを実行し、インストール済みであればこの手順は不要です。

scp cvuqdisk-1.0.10-1.rpm 192.168.56.102:/tmp/

出力例:

[root@node1 rpm]# scp cvuqdisk-1.0.10-1.rpm 192.168.56.102:/tmp/
The authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.
ECDSA key fingerprint is SHA256:+BYhvUai9hGFMloZdGYTcEtTV6hpPYVSPBBpFeOOorQ.
ECDSA key fingerprint is MD5:b4:db:ca:a3:4d:11:b3:a1:8f:1a:da:dd:46:e5:e0:63.
Are you sure you want to continue connecting (yes/no)? '<===「yes」を入力し、Enterを押す
Warning: Permanently added '192.168.56.102' (ECDSA) to the list of known hosts.
root@192.168.56.102's password:  <===rootのパスワードを入力し、Enterを押す
cvuqdisk-1.0.10-1.rpm                                      100%   11KB   1.2MB/s   00:00
[root@node1 rpm]#

10-3. cvuqdiskパッケージのインストール(node2)

node2で作業します。

パッケージがインストールされているか確認します。

rpm -q cvuqdisk

インストールされていない場合は、以下の手順を実行します。

cd /tmp/
export CVUQDISK_GRP=oinstall
rpm -ivh cvuqdisk-1.0.10-1.rpm
rpm -q cvuqdisk

10-4. インストーラー起動

インストーラー起動前に、ネットワーク関連で1つだけ作業します。
node1,node2の各ノードで、以下のコマンドを実行します。

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

node1に戻り、インストーラーを起動します。

su - grid
$ export LANG=ja_JP.utf8
$ $ORACLE_HOME/gridSetup.sh

※Tera TermでGUIを使用したい場合は、以下の手順などであらかじめ設定します。
https://zenn.dev/db_tech/articles/be241d9dfe804e

10-5. Gridインストール

▼ デフォルト[新しいクラスタ用のOracle Grid Infrastructureの構成]

▼ デフォルト[Oracleスタンドアロン・クラスタの構成]

▼ 「cluster-rac19c」「scan.rac19c」を記入

▼ [追加] > 「node2.rac19c」「node2-vip.rac19c」を記入 > [OK]


▼ [SSH接続] > OSパスワードにgridのパスワードを記入

▼ [設定] をクリック

▼ [enp0s9] を「ASMおよびプライベート」に変更

▼ デフォルト[Oracle Flex ASMを記憶域として使用]

▼ デフォルト[いいえ]

▼ 「外部」「/dev/sdb1」を選択

▼ 任意のパスワードを記入

▼ デフォルト[Intelligent Platform Management Interface(IPMI)を使用しない]

▼ デフォルト(EMは登録しない)

▼ デフォルト

▼ デフォルト「/u01/app/grid」

▼ デフォルト「/u01/app/oraInventory」

▼ デフォルト

▼ 待ちます...

▼ [修正および再チェック] をクリックし、node1,node2でスクリプトをrootユーザーとして実行

出力例:

[root@node1 ~]# /tmp/GridSetupActions2024-03-17_05-28-11PM/CVU_19.0.0.0.0_grid/runfixup.sh
All Fix-up operations were completed successfully.
[root@node1 ~]#

実行後、[OK]をクリック

▼ [すべて無視]を選択(スワップサイズとRPM Package Manegerは無視)

▼ 待ちます...

▼ 構成スクリプトを両ノードで実行(rooユーザー)
※必ず先にnode1で実行が完了してから、node2で実行すること

出力例:

[root@node1 ~]# /u01/app/oraInventory/orainstRoot.sh
権限を変更中 /u01/app/oraInventory.
グループの読取り/書込み権限を追加中。
全ユーザーの読取り/書込み/実行権限を削除中。

グループ名の変更 /u01/app/oraInventory 宛先 oinstall.
スクリプトの実行が完了しました。
[root@node1 ~]#
[root@node1 ~]# /u01/app/19.3.0/grid/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u01/app/19.3.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:  <==== 「/usr/local/bin」を入力
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

(中略)

##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   deb22038c0874fe6bfc75b268420da15 (/dev/sdb1) [DATA]
1の投票ディスクを検出しました。
2024/03/17 19:07:20 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'.
2024/03/17 19:08:24 CLSRSC-343: Successfully started Oracle Clusterware stack
2024/03/17 19:08:24 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'.
2024/03/17 19:10:10 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2024/03/17 19:10:35 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

▼ [閉じる]

10-6. Gridインストール後の確認

インストールしたサーバの”State”が全て”ONLINE”になっていることを確認

su - grid
$ /u01/app/19.3.0/grid/bin/crsctl status resource -t

出力例(抜粋):

[grid@node1 ~]$ /u01/app/19.3.0/grid/bin/crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------

(中略)

ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE

インストールしたサーバはnode1とnode2なので、上記のような"OFFLINE"は無視。

10-7. Gridインストール・ユーザーの環境変数の設定(node1,node2)

ps -ef | grep asm_で各ノードのASMインスタンスのSIDを確認し、その値をORACLE_SIDとします。

su - grid
$ ps -ef | grep asm_
$ vi ~/.bash_profile

export ORACLE_SID=+ASM1 <--- [ps -ef | grep asm_] の結果を元に設定
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8

$ cat ~/.bash_profile
$ . ~/.bash_profile

node1で設定が完了したら、同じようにnode2でも設定します。
node1のSIDをnode2に設定しないように気を付けてください。

11. Oracle databaseのインストール

11-1. ファイルの解凍

su - oracle
$ cd /u01/app/oracle/product/19.3.0/dbhome_1;pwd
$ ls -l /tmp/work/LINUX.X64_193000_db_home.zip
$ unzip -q /tmp/work/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1/

11-2. OUIの起動

$ export LANG=ja_JP.utf8
$ ./runInstaller

▼ [ソフトウェアのみの設定] を選択

▼ デフォルト[Oracle Real Application Clustersデータベースのインストール]

▼ 全てのノードが選択されていることを確認
▼ [SSH接続] > [OSパスワード]にOracleのパスワードを記入 > [設定] を選択


▼ デフォルト(EE)

【おまけ話】 Oracle 19c SE2において、RACはサポート対象外...

Oracle 19cから、 Standard Editionでは、RACはサポート対象外となりました。
https://cosol.jp/techdb/2019/05/desupport_rac_on_19c_se2/
その結果、RACに似た構成である、SEHAが注目されています(多分)
https://www.insight-tec.com/tech-blog/dbvisit/20230216_oracle-se2ha/

▼ デフォルト「/u01/app/oracle」

▼ デフォルト

▼ デフォルト

▼ 待ちます...

▼ [すべて無視] を選択 > [次へ] > [はい]

▼ [インストール]

▼ 待ちます...

▼ 表示されたパスにある構成スクリプトを両ノードで実行(rootユーザー)> [OK]

インストール完了です。

11-3. Oracleインストール・ユーザーの環境変数の設定(node1,node2)

su - oracle
$ vi ~/.bash_profile

以下を追記

export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8

$ cat ~/.bash_profile
$ . ~/.bash_profile

node1で設定が完了したら、同じようにnode2でも設定します。

12. ASMディスク・グループの作成

node1でASMCAを起動します。

su - grid
$ /u01/app/19.3.0/grid/bin/asmca

▼ [ディスクグループ] を選択

▼ [作成] を選択

▼ 「FRA」「外部」「/dev/sdc1」を入力 > [OK]

▼ 状態が「MOUNTED」であることを確認 > [終了]

ディスクグループの作成完了です。

13. データベースの作成

13-1. DBCAの起動

node1でDBCAを起動します。

su - oracle
$ $ORACLE_HOME/bin/dbca

▼ デフォルト[データベースの作成]

▼ [拡張構成] を選択

▼ デフォルト[汎用またはトランザクション処理]

▼ 全てのノードが選択されていることを確認

▼ デフォルト

▼ デフォルト

▼ [高速リカバリ領域の指定] を選択 > パスを「+FRA」に

▼ デフォルト

▼ 全てデフォルト

▼ [Enterprise Manager Database Expressの構成] のチェックを外す

▼ 任意のパスワードを入力

▼ デフォルト(データベースの作成)

▼ 待ちます

▼ 「すべて無視」のチェックを入れる

▼ [終了]

▼ 待ちます

▼ [閉じる]

13-2. 環境変数の設定(node1,node2)

ps -ef | grep ora_で各ノードのインスタンスのSIDを確認し、その値をORACLE_SIDとします。

$ ps -ef | grep ora_
$ vi ~/.bash_profile

以下を追記

export ORACLE_SID=orcl1 <--- [ps -ef | grep ora_] の結果を元に設定

$ cat ~/.bash_profile
$ . ~/.bash_profile

node1で設定が完了したら、同じようにnode2でも設定します。

14. 構築後の確認

14-1. 正常稼働の確認

crsctl status resource -t

出力例:

[grid@node1 ~]$ crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.chad
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.net1.network
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.ons
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node2                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    Started,STABLE
      2        ONLINE  ONLINE       node2                    Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       node1                    STABLE
ora.node1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.node2.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.orcl.db
      1        ONLINE  ONLINE       node1                    Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      2        ONLINE  ONLINE       node2                    Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node1                    STABLE
--------------------------------------------------------------------------------
[grid@node1 ~]$

14-2. インスタンスの稼働確認

su - oracle
$ sqlplus / as sysdba
SQL> col inst_name for a30
SQL> select inst_number,inst_name from v$active_instances;
SQL> select inst_id, con_id, instance_name, status from gv$instance order by inst_id, con_id;

出力:

SQL> select inst_number,inst_name from v$active_instances;

INST_NUMBER INST_NAME
----------- ------------------------------
          1 node1.rac19c:orcl1
          2 node2.rac19c:orcl2

SQL> 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 orcl1            OPEN
         2          0 orcl2            OPEN

SQL>

Discussion