この投稿は、JPOUG Advent Calendar 2022 の 7日目の投稿です。
昨日は wrcsus4 さんの投稿でした。
Nutanix には、Nutanix Database Service(NDB)という、Nutanix で DB as a Service を実現する製品があります。以前は Nutanix Era という名前でしたが、最近改名されました。
JPOUG Advent Calendar 2022 の投稿なので、ためしに NDB に Oracle Database の DB サーバを登録してみます。
今回の内容です。
RPM インストールではなく、Oracle Universal Installer でサイレント インストールする場合はこちらをどうぞ。(21c / 19c)
構成のイメージです。
今回の環境
Nutanix の NDB サーバは、あらかじめセットアップしてあります。
Oracle Database サーバにするために、Oracle Linux 8 の仮想マシンを Nutanix AHV 上に最少インストールで用意してあります。
[root@lab-oracle-01 ~]# dmidecode | grep -i Product Product Name: AHV [root@lab-oracle-01 ~]# cat /etc/oracle-release Oracle Linux Server release 8.7
1. Oracle Database サーバの用意
最初の Oracle Database のインストール(とついでに DB 作成)は、できるだけ簡単に済ませてみます。今回は、とにかく手軽に Oracle Database を用意するために、DBMS は RPM でインストールしました。
NDB では今のところ 19c までがサポート対象なので、ORACLE の Web サイト から下記の RPM ファイルをダウンロードしておきます。
- oracle-database-ee-19c-1.0-1.x86_64.rpm
oracle-database-preinstall-19c は、Yum リポジトリからインストールします。
[root@lab-oracle-01 ~]# dnf install -y oracle-database-preinstall-19c
oracle ユーザが作成されるので、パスワードを設定しておきます。
[root@lab-oracle-01 ~]# passwd oracle
そして、ダウンロードしておいた Oracle Database の RPM をインストールします。
[root@lab-oracle-01 ~]# dnf install -y ./oracle-database-ee-19c-1.0-1.x86_64.rpm
データベースを作成しておきます。
[root@lab-oracle-01 ~]# /etc/init.d/oracledb_ORCLCDB-19c configure
2. DB サーバでの NDB 登録準備
2-1. RPM の追加インストール
NDB に登録する Linux 仮想マシンでは、いくつか RPM を追加インストールしておく必要があります。
sshpass は EPEL に配置されているため、dnf コマンドは2回に分けて実行します。
[root@lab-oracle-01 ~]# dnf install -y gcc zip rsync lsof oracle-epel-release-el8 [root@lab-oracle-01 ~]# dnf install -y sshpass
2-2. sudo 設定
NDB が DB サーバで操作するためのユーザでは、パスワードなしで sudo 実行できるようにしておく必要がるので、sudoers ファイルを編集しておきます。今回は、sudoers.d に oracle というファイルを追加作成しました。
[root@lab-oracle-01 ~]# cat /etc/sudoers.d/oracle oracle ALL=(ALL) NOPASSWD: ALL
2-3. DB サーバのポート開放
今回は、DB サーバのファイアウォールは無効化してしまいます。
[root@lab-oracle-01 ~]# systemctl stop firewalld [root@lab-oracle-01 ~]# systemctl disable firewalld
2-4. 仮想ディスクの追加とファイル配置の調整
NDB では、DBMS と DB の構成ファイルを、OS とは別の仮想ディスクに配置しておく必要があります。通常は Oracle Database インストールや DB 作成をする前に、ディスク構成を整えますが、とりあえずの RPM インストールをしてしまっているので荒々しい手順で配置調整しています。
今回は下記のように DB サーバの VM に、vDisk を追加しました。ちなみにディスク容量は、特に要件に従ったわけでなく見ため的に分かりやすくしてあります。
- vDisk #2 → /dev/sdb、40GB(ORACLE_HOME 用)
- vDisk #3 → /dev/sdc、50GB(DB 構成ファイル用)
Oracle Database のインスタンスとリスナーは停止しておきます。
[root@lab-oracle-01 ~]# /etc/init.d/oracledb_ORCLCDB-19c stop
パーティションとファイルシステムを作成します。
[root@lab-oracle-01 ~]# echo '2048,,' | sfdisk -uS /dev/sdb [root@lab-oracle-01 ~]# echo '2048,,' | sfdisk -uS /dev/sdc [root@lab-oracle-01 ~]# mkfs -t ext4 /dev/sdb1 [root@lab-oracle-01 ~]# mkfs -t ext4 /dev/sdc1
ORACLE_HOME と DB 構成ファイルを、ローカルディスクから追加ディスクに置き換えます。
[root@lab-oracle-01 ~]# mount /dev/sdb1 /mnt/ [root@lab-oracle-01 ~]# cp -pr /opt/oracle/product/19c/dbhome_1/. /mnt/
[root@lab-oracle-01 ~]# umount /mnt [root@lab-oracle-01 ~]# mount /dev/sdc1 /mnt/ [root@lab-oracle-01 ~]# cp -pr /opt/oracle/oradata/. /mnt/ [root@lab-oracle-01 ~]# umount /mnt [root@lab-oracle-01 ~]# rm -rf /opt/oracle/product/19c/dbhome_1/* /opt/oracle/oradata/*
fstab に追加ディスクのマウント設定を追記しておきます。
[root@lab-oracle-01 ~]# cat /etc/fstab | tail -n 2 /dev/sdb1 /opt/oracle/product/19c/dbhome_1 ext4 defaults 0 0 /dev/sdc1 /opt/oracle/oradata ext4 defaults 0 0
マウントします。
[root@lab-oracle-01 ~]# mount -a
結果的に、ディスク構成は下記のようになっています。
[root@lab-oracle-01 ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs 1.8G 8.5M 1.8G 1% /run tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/mapper/ol-root 17G 5.2G 12G 31% / /dev/sda1 1014M 373M 642M 37% /boot tmpfs 359M 0 359M 0% /run/user/0 /dev/sdb1 40G 7.0G 31G 19% /opt/oracle/product/19c/dbhome_1 /dev/sdc1 49G 4.0G 43G 9% /opt/oracle/oradata [root@lab-oracle-01 ~]# lsblk -i /dev/sd? NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk |-sda1 8:1 0 1G 0 part /boot `-sda2 8:2 0 19G 0 part |-ol-root 252:0 0 17G 0 lvm / `-ol-swap 252:1 0 2G 0 lvm [SWAP] sdb 8:16 0 40G 0 disk `-sdb1 8:17 0 40G 0 part /opt/oracle/product/19c/dbhome_1 sdc 8:32 0 50G 0 disk `-sdc1 8:33 0 50G 0 part /opt/oracle/oradata
そして、DB インスタンスとリスナーを起動しておきます。
[root@lab-oracle-01 ~]# /etc/init.d/oracledb_ORCLCDB-19c start
3. NDB への DB サーバ登録
今回は、NDB に DB サーバの仮想マシンを登録して、NDB の機能で DB をプロビジョニングします。(DB & DB サーバ VM を同時に NDB に登録する場合は こちら)
NDB の Web UI から、DB サーバの仮想マシンを登録します。
「データベース サーバー VM」画面にある「登録」をクリックして、データベース サーバー VM のパラメータを入力して「次へ」をクリックします。
「自動パッチ適用」についてはまだ何も設定できない状態なので、そのまま「登録」をクリックします。
処理が開始されたので、ステータスを確認してみます。
少し待つと、ステータスがすべて緑になって、DB サーバの登録が完了します。
「データベース サーバー VM」画面に、DB サーバが登録されました。
4. データベースのプロビジョニング
NDB でのデータベース プロビジョニングでは、「プロファイル」で設定を指定します。いくつかプロファイルの準備をしつつ、DB をプロビジョニングしてみます。
4-1. ソフトウェア プロファイル
ソフトウェア プロファイルには、DBMS のソフトウェアについての情報が含まれているもので、DBMS がインストールされた DB サーバから作成(というか抽出)されます。
NDB では Oracle 以外にも数種類の DBMS を管理でき、デフォルトでソフトウェア プロファイルが用意されていますが、Oracle Database のものは含まれていません。そこで、登録した DB サーバからプロファイルを作成します。
「プロファイル」→「ソフトウェア」画面を開き、「作成」→「ORACLE」→「シングル インスタンス データベース」をクリックします。
プロファイル名を入力して、NDB に登録してある DB サーバの仮想マシンを選択して「次へ」をクリックします。
注釈はオプションなので、空欄のまま「作成」をクリックします。
DB サーバの登録時と同様に、処理の進捗を確認できるので完了を待ちます。
4-2. コンピュート プロファイル
コンピュート プロファイルでは、DB サーバ 仮想マシンの CPU / メモリ 割り当てを設定します。デフォルトで用意されているプロファイルもありますが、この検証環境では物理サーバのリソースが不足しているので追加作成します。
「プロファイル」→「コンピュート」画面を開いて、「作成」をクリックします。
そして、プロファイル名、CPU のコア数、メモリ容量を入力して「作成」をクリックします。
4-3. データベース パラメータ プロファイル
データベース パラメータ プロファイルは、Oracle Database のものもデフォルトで用意されています。しかし、新規作成したコンピュート プロファイルとはミスマッチなので、追加作成します。
「プロファイル」→「データベースのパラメータ」画面を開いて、「作成」をクリックします。
「ORACLE」を選択して、「次へ」をクリックします。
プロファイル名を入力して、今回は「Total Memory (MiB)」だけデフォルト値から変更して、「作成」をクリックします。
これで、データベース パラメータ プロファイルが作成されました。
4-4. データベースのプロビジョニング
それでは、データベースをプロビジョニングします。
「データベース」→「ソース」を開いて、「プロビジョン」→「ORACLE」→「シングル インスタンス データベース」をクリックします。
「1 データベース サーバー VM」では、今回は「新しいサーバーの作成」を選択します。次のようなパラメータを入力して、「次へ」をクリックします。
- データベース サーバー名(仮想マシン名)
- ソフトウェア プロファイル、コンピュートプロファイル、ネットワーク プロファイル(これは NDB Server セットアップ時に作成ずみ)
- NDB から接続する OS ユーザ(oracle)のパスワード
- SSH ログインのための公開鍵
データベースのパラメータを入力して、「次へ」をクリックします。今回は、次のようなパラメータを設定 / デフォルト値から変更しています。
- データベース名(NDB の登録名)
- Oracle SID、グローバル データベース名
- SYS と SYSTEM のパスワード
- データベース パラメータ プロファイル
NDB でのスナップショット取得などで利用される「Time Machine」の設定を入力して、「次へ」をクリックします。今回はデフォルトのままです。
「自動パッチ適用」は、今回は設定できないのでそのまま「プロビジョン」をクリックします。
しばらく待つと、DB サーバと DB がプロビジョニングされるはずです。
「データベース」画面に、「ソース DB」という表現で追加されています。
「ソース DB」のリンクをクリックしていくと、プロビジョニングされた DB サーバと DB の情報が確認できます。
そしてこの DB サーバは、Nutanix HCI 上に仮想マシンとして新規作成されています。
以上、謎の多い NDB で Oracle Database をプロビジョニングしてみる様子でした。
詳細は続編(仮)にて・・・
明日の JPOUG Advent Calendar 2022 は、HiroyukiNakaie さんです。