Linux で 19c RAC 環境構築

テスト用に以下のようなRAC環境を構築する手順のメモ。

  • 2ノード構成
  • VMware ESXi 上の仮想マシン上に作成
  • OSはOracle Linux 7.9
  • ASMの共有ディスクはiSCSIのストレージを使用
  • ASMFDでストレージパスを永続化
  • インストール時にRU 19.10を適用
  • DNSを使って名前解決

Grid InfrastructureとDatabase、RUと最新のOPatchなど、必要なファイルは/tmp配下に配置しておく。

OS側の事前準備

ネットワーク構成を決める

パブリックネットワーク、VIP、SCAN、プライベートネットワークのIPアドレスとホスト名を決める。

今回は以下のような構成としている。

ノード1

種別ホスト名IPアドレス
パブリックtr1.dn.home192.168.100.74
VIPtr1-vip.dn.home192.168.100.75
プライベート192.168.1.74

SCAN

ホスト名IPアドレス
tr-scan.dn.home192.168.100.78
同上192.168.100.79
同上192.168.100.80

ノード2

種別ホスト名IPアドレス
パブリックtr2.dn.home192.168.100.76
VIPtr2-vip.dn.home192.168.100.77
プライベート192.168.1.75

DNSには上記名前解決が行えるように適宜設定を行い、各ノードにパブリックとプライベートのIPアドレスを固定で設定する。この時、全てのノードで種別ごとのネットワークインターフェース名が同一になっている必要がある。例えば、二つのノードに以下のインターフェースがあった場合、ノード1のパブリックネットワークがens192であれば、ノード2のパブリックネットワークもens192としなければならない。

[root@tr1 ~]# nmcli dev
DEVICE      TYPE      STATE     CONNECTION
ens192      ethernet  接続済み  ens192
ens224      ethernet  接続済み  ens224
ens256      ethernet  接続済み  ens256
virbr0      bridge    接続済み  virbr0
lo          loopback  管理無し  --
virbr0-nic  tun       管理無し  --
[root@tr2 ~]# nmcli dev
DEVICE      TYPE      STATE     CONNECTION
ens192      ethernet  接続済み  ens192
ens224      ethernet  接続済み  ens224
ens256      ethernet  接続済み  ens256
virbr0      bridge    接続済み  virbr0
lo          loopback  管理無し  --
virbr0-nic  tun       管理無し  --

ファイアウォールの停止

# systemctl stop firewalld
# systemctl disable firewalld

Preinstallation RPM の実行

Preinstallation RPMをインストールして、動作要件を自動で設定する。

# yum install oracle-database-preinstall-19c.x86_64

ユーザ・グループの作成と修正

Preinstallation RPMではgridユーザは作られないので別途作成し、必要なグループも追加する。

# useradd -u 54322 -g oinstall -G dba grid
# groupadd -g 54327 asmdba
# groupadd -g 54328 asmoper
# groupadd -g 54329 asmadmin
# usermod -g oinstall -G asmdba,asmoper,asmadmin grid
# usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmdba oracle

パスワードの設定。

# passwd grid
# passwd oracle

インストール先のディレクトリ作成

# mkdir -p /u01/app/19.0.0/grid
# mkdir -p /u01/app/grid
# mkdir -p /u01/app/oracle
# chown -R grid:oinstall /u01
# chown oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/

リソース制限の設定

Preinstallation RPMを実行すると、oracleユーザに対するリソース制限は行われているが、gridユーザに対しては未設定のため、以下を追加する。

/etc/security/limits.d/oracle-database-preinstall-19c.conf

grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768

Grid Infrastructureのインストール

必要なファイルの展開(gridユーザ)

Grid Infrastructureのzipファイルを展開する。

$ unzip -d /u01/app/19.0.0/grid /tmp/V982068-01.zip

RUを適用するため、OPatchを最新のものに置き換える。

$ mv /u01/app/19.0.0/grid/OPatch /u01/app/19.0.0/grid/OPatch_org
$ unzip -d /u01/app/19.0.0/grid /tmp/p6880880_190000_Linux-x86-64.zip

RU 19.10 を展開する。

$ unzip /tmp/p32545008_190000_Linux-x86-64.zip

ASMディスクの準備

共有ディスクがすでに両ノードに接続されている前提。ASMFDを使うためのラベル付けを行う。

ディスク構成は以下。今回は検証用に外部冗長性で構成するため、デバイスは1つずつとなっている。

用途デバイスラベル
OCR・投票ディスク用/dev/sdcOCR
データファイル格納用/dev/sddDATA
# export ORACLE_HOME=/u01/app/19.0.0/grid
# export ORACLE_BASE=/tmp
# $ORACLE_HOME/bin/asmcmd afd_label OCR /dev/sdc --init
# $ORACLE_HOME/bin/asmcmd afd_label DATA /dev/sdd --init
# $ORACLE_HOME/bin/asmcmd afd_lslbl /dev/sdc
# $ORACLE_HOME/bin/asmcmd afd_lslbl /dev/sdd

インストーラの実行(gridユーザ)

RUの適用とインストールの実行を同時に行う。

$ /u01/app/19.0.0/grid/gridSetup.sh -applyRU /tmp/32545008

RUの適用が成功すると、OUIでインストーラが起動する。

「新しいクラスタ用のOracle Grid Infrastructureの構成」を選択。

「Oracle スタンドアロン・クラスタの構成」を選択。

SCAN名を事前にDNSに登録したものに変更して次へ。

[追加]ボタンでクラスタを構成するノードを指定し、追加する。

[SSH接続]ボタンを押して、ノード間でSSH接続ができるようにgridユーザのパスワードを指定、「設定」ボタンを押す。

問題なく設定できれば以下のメッセージが表示される。

ネットワークインターフェースの選択画面。プライベートネットワークに使用するインターフェースが適切に選択されていることを確認する。

ASMを使うのでそのままの設定で進める。

存在意義のわからないGIMRは構成してはならない。経験上、これがあると余計なメモリを消費する、SYSAUXが肥大化してディスクグループを圧迫する、パスワードの期限切れでパッチ適用時に障害を起こすなど、安定稼働を阻害する要素が多い割に役に立ったことはなく、百害あって一利なし。

ディスクグループの選択画面で、「Error 49802 initializing ADR」というメッセージが表示されて候補ディスクが表示されない場合がある。

これは、/u01/app/oracle 配下に root が所有する diag というディレクトリが作られていることが原因。このディレクトリを削除してから一度前の画面に戻り、再度この画面に進めば候補ディスクが表示されるようになる。

# ls -l /u01/app/oracle/
合計 0
drwxrwxr-x. 4 root root 32 10月 30 09:23 diag
# rm -rf /u01/app/oracle/diag/

OCRと投票ディスクの格納先ディスクグループを選択する。先にラベル付けしたディスクを選択する。ディスクグループ名は「OCR」としている。

ASMインスタンスの管理者パスワードを設定。

この辺りはハードウェア依存。今回は使用しない。

事前にCloud ControlのAgentをインストール済みの場合は、ここで登録作業が行える。今回は設定しない。

グループの選択。通常は自動で選択されているのでそのまま次へ。

ORACLE_BASEの選択。デフォルトだと別のディレクトリが指定されているので、選択しなおす。

インベントリディレクトリの選択。自動で選択されているもののまま次へ。

rootの構成スクリプトを自動実行するように指定して次へ。

前提条件チェックで警告が出た場合は適宜対応する。自動修正可能なものは「修正および再チェック」で修正スクリプトを生成・実行すればよい。物理メモリやスワップサイズの警告は今回は無視する。

インストールを開始。完了を待つ。

インストールが完了したら、gridユーザの.bash_profileに環境変数を設定しておく。

ノード1側

umask 022
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.0.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=+ASM1
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8

ノード2側

umask 022
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.0.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=+ASM2
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8

Databaseのインストール

必要なファイルの展開(oracleユーザ)

Databaseのzipファイルを展開する。

$ mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
$ unzip -d /u01/app/oracle/product/19.0.0/dbhome_1 /tmp/V982063-01.zip

RUを適用するため、OPatchを最新のものに置き換える。

$ mv /u01/app/oracle/product/19.0.0/dbhome_1/OPatch /u01/app/oracle/product/19.0.0/dbhome_1/OPatch_org
$ unzip -d /u01/app/oracle/product/19.0.0/dbhome_1 /tmp/p6880880_190000_Linux-x86-64.zip

インストーラの実行(oracleユーザ)

適用するRUはGIにあてたものと同じでよい。

$ /u01/app/oracle/product/19.0.0/dbhome_1/runInstaller -applyRU /tmp/32545008

RUの適用が成功すると、OUIでインストーラが起動する。

RACインストールの場合、「ソフトウェアのみの設定」を選択して進める。

Oracle Real Application Clustersデータベースのインストールを選択。

RACを構成するノードを選択し、[SSH接続] ボタンを押してoracleユーザのパスワードを設定する。

Enterprise Editionを選択する。

ORACLE_BASEを選択する。

グループを選択する。デフォルトで作成済のものが選択されているのでそのまま次へ。

構成スクリプトを自動実行できるようにrootのパスワードを入力。

GIのインストール時点でチェックはパスしているはずなので特に問題はないはずだが、警告が出る場合は対処する。今回はスワップサイズの警告は無視する。

インストールを開始し、正常に完了するのを待つ。

インストールが完了したら、oracleユーザの.bash_profileに環境変数を設定しておく。

umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8

追加のディスクグループの作成

GIインストール時に作成したOCR・投票ディスク用のディスクグループのほかに、データベース格納用のディスクグループを作成する。

gridユーザでASM Configuration Assistant(ASMCA)を起動する。

$ asmca

左メニューの [ディスク・グループ] を選択し、[作成]ボタンを押下。

ディスクグループ名を「DATA」とし、対象のディスクを選択し、[OK]を押下。

正しく追加されたことを確認する。

データベースの作成

Database Configuration Assistant(DBCA)でデータベースを作成する。

以下、RAC特有の部分だけ記載。

データベースのタイプには、Oracle Real Application Cluster を選択する。

構成するノードを選択。

データベースの記憶域には、「自動ストレージ管理(ASM)」を選択し、既存のディスクグループを設定する。

RACの場合、DBCAでも前提条件チェックが走るので、警告があれば対処する。今回はスワップサイズの警告は無視する。

RACの場合、リスナーの構成画面は表示されない(grid側で作成済みのため)。

これ以外は通常のシングルインスタンスと同様。これでRAC構成のデータベースの構成は完了。

コメント