NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix の NDB と Oracle Database。

この投稿は、JPOUG Advent Calendar 2022 の 7日目の投稿です。
昨日は wrcsus4 さんの投稿でした。

adventar.org

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 さんです。

©2023 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。