見出し画像

自宅のWindows10にHyper-Vを導入しOracle Linux上にOracle DBを立ててみる


まえがきと目的

インフラSEとして働く中で、なんとなく「勉強して新しい知識を得なければ!」と思いつつも実現したいものが自分の中にないのでモチベーションが続かなかった。
そんな折、顧客の要望でOracle LinuxとOracle DBの組み合わせで構築が必要になった案件が出てきた。
その顧客では元々、SPARCサーバのSolaris上にOracle DBを構築して利用していたのだが、御存知の通りSPARCは次期モデルは販売されず、シリーズの終息が決まっている。

つまり次のハードウェアリプレイスでは別のサーバにする必要がある。
DBサーバは複数台あるため、コストメリットを考えるとVMを構築して運用したい。
VMならばまず候補の筆頭に挙げられるのはVMware vShpereになるが、Oracle DBのライセンスがソフトウェアパーティショニング扱いのため、会社のネットワーク上に複数のvShpereがある場合、全て遷移可能な筐体と判断されライセンス価格がとんでもないことになる。

https://www.oracle.com/assets/partitioning-jp-168078-ja.pdf

(申請することで例外を認められることもあるが、事例としては非常に少ないらしく、この案は絶望的である。)
その次の案として、RHELのKVMで仮想化がある……と言いたいところだが、残念ながらRHELのKVMで仮想化されたサーバではOracle DBがサポートされていない。
厳密に言えば、使用することは禁じられていないが何らかの障害が起きたときに過去のナレッジを元でしか調査はできず、未知の障害にはサポート対応が得られない。
で、本題となるOracle Linuxを採用する方針になった。Oracle LinuxのKVMであれば、Oracle DBのサポートを受けられ、仮想化によってハードウェアの削減も期待できる。Oracle DBの需要が減らないのであれば、今後Oracle LinuxとOracle DBの組み合わせの案件は増えるのではないかと勝手に予想している。ちなみに、学習目的であればOracle DBは無償で使うことが出来る。(OTNライセンス)
使う方針になったはいいものの、これまでLinuxはRHEL(とCentOS)しかまともに使ってこなかったため、いい機会なので勉強しようというわけだ。
Hyper-V上に構築しようと思ったのは特に理由はなく、ぶっちゃけ使ったことのあるVMware PlayerやOracleが出している仮想環境のVertual Boxでもいいのだが、Hyper-Vはこれまであまり使ってこなかったため、こちらもついでに勉強しようと思い至った。
え?Oracle Linux KVM上にVMを立てたほうが学びになるのではって?
……前置きは長くなったが、以下メモがてら記載していく。

環境

ホストOS:Windows 10 Pro (22H2)
CPU:AMD Ryzen 7 2700X Eight-Core Processor 3.70 GHz
メモリ:32GB 
ディスク:800GBくらいの空き
※Windows 10 HomeはHyper-Vをインストールできないので諦めてVMware PlayerかOracle VM VirtualBoxを使おう。
ネットワーク:有線LAN インターネット接続あり proxyなし
※会社のネットワークで色々制限がある場合を考慮していないので要注意

Hyper-Vのインストール

特に語ることもなく、Microsoftの下記記事を参照。

インストールが完了し、再起動後にWindowsのスタートメニューを開く(Windowsのマークを左クリックすると出るやつ)と「Hyper-V マネージャ」が出てくる。
せっかくなので「Hyper-V マネージャ」を右クリックして「スタートにピン留めする」をして、スタートメニューから起動しやすくしておこう。お好みでタスクバーにピン止めや、デスクトップにショートカット作成でもいいだろう。

Oracle Linuxのインストール

まずは下記からイメージファイルをダウンロードする。

少し先の話をすると、インストールするOracle DBのバージョンは2023年7月現在最新の長期サポートバージョンである19cにしたい。
19cをサポートするOracle Linuxは7系のバージョンなので、今回は7.9のイメージをダウンロードしよう。
(厳密に言えばOracle DBのパッチであるRU19.7を適用すればOracle Linux8でも使えるのだが、有償サポート契約が必要である)
ちなみにOracle Linux 7のサポート期限は2024/7なので、Oracle Linux 8を使いたい場合はOracle DB 23cを使おう。
ここでは「OracleLinux-R7-U9-Server-x86_64-dvd.iso」をクリックしてダウンロードする。
「Hyper-V マネージャ」を起動すると下記画面が表示されるので、右メニューの「新規」をクリックして「仮想マシン」を選択。

赤枠の「新規」をクリックするといくつか選択肢が出る

「仮想マシンの新規作成のウィザード」の画面が出るので、次へを選択。(お好みでこのメッセージを表示しないをチェック)

次へ


適当な名前を入力し、必要であれば別の場所を指定して次へを選択。

かそうましんのなまえをいれてください

世代の指定が出るが、Oracle Linux7は第2世代でいいらしい。「第2世代」を選択して次へ。

UEFIのことはよく分からなくても大丈夫

メモリサイズはデフォルトのサイズでとりあえずOK。「この仮想マシンに動的メモリを使用します」のチェックは入れたまま。

たぶんデフォルトで大丈夫

次が少し注意。ネットワークの構成は「接続しない」にする。何かしら選択した状態にしておくと、OSインストール時にイメージファイルが読み込まれず、NIC経由でインストールしようとして失敗する。

私はここでネットワークデバイスを指定してOSインストールに失敗し続け30分無駄にした

仮想ハード ディスクの接続は必要であれば容量の大きいディスクに変更しよう。Cドライブには入れないほうがいいだろうが、下の例では他のドライブがいっぱいだったので仕方なくCドライブへ。

これはCドライブを指定した悪い例です。

インストールオプションで、ダウンロードしておいたOracle LinuxのISOファイルを選択。

後でにしても大丈夫だけどせっかくなので

あとは「完了」を押してVM作成を開始。作成が完了すると仮想マシンの欄に表示される。

OL3は気にしないで

このまま起動してもインストールは始まらない。
作成したVMを右クリックして「設定」を選択。「セキュリティ」の項をクリックする。下記が表示されるので、「セキュアブートを有効にする」のチェックを外してOKを押す。

この設定は絶対に必要

上記設定をしたら、もう一度作成したVMを右クリックして「接続」でターミナル画面を開き、さらにもう一度作成したVMを右クリックして「起動」すると、おなじみのモノクロ画面が表示される。
上のInstall Oracle Linux 7.9を↑キーで選び、Enterキーで決定。

放置してると真ん中が勝手に選択されるので要注意

あとは普通のRHEL系サーバのインストール画面なので、割愛したいところだが、一応説明しておく。
まずは日本語を選択。

ご自由にご選択ください

いくつか選択する部分があるが、インストール先のところで⚠のマークが出ているので選択する。

環境によってはこの画面は変わるかもしれない

選択するとディスクの設定が自動で読み込まれて、⚠が解消されるので「完了」を押す。

勝手にやってくれるので特にイジる必要はない

続いてネットワークの設定だが、デフォルトでHyper-Vが用意していくれている「Default Switch」は外部ネットワークに接続できず、yum updateなどができない。(昔はできたらしいが、今はできない……らしい)
なので、外部ネットワークに接続できる仮想スイッチを用意する必要がある。
Hyper-V マネージャーの画面の「仮想スイッチ マネージャー」をクリックする。

ここは結構ハマりポイント

右画面の仮想スイッチの作成で「外部」を選択し、「仮想スイッチの作成」をクリックする。

左のextSWはすでに作っておいたやつ

名前はお好みでつけて、あとはデフォルトで選択された通りのままOKを押す。ネットワーク接続が失われる注意喚起の画面が出ると思うが、「はい」で進む。(これにより何かしら影響出たときの責任は取れません)

選択するネットワークデバイスは環境によって異なるので適宜読み替える

なおHyper-Vのネットワークに関しては下記が参考になる。正直自分でもあまり理解しきれてないので、ふんわり知っておくと良さそう。

仮想スイッチ作成後、仮想マシンを右クリックして「設定」を選択。

画像は例。今の状態は「実行中」になってるはず

ネットワークアダプタを選択して、右メニューの「仮想スイッチ」でさっき作成した仮想スイッチをプルダウンから選択して、OKを押す。

チェックは付けないままにする。

改めてOracle Linuxのインストール画面に戻り、「ネットワークとホスト名」を選択。

「接続していません」のままでも進めはするが後で面倒

ホスト名はお好みで命名し、Ethernet(eth0)を「オン」にして、「完了」を押す。ここで「設定」を押して詳細な設定することも可能だが、あまりネットワークに詳しくないようなら基本的にDHCPのままで進めたほうがよい。ちなみに自分はいじくりこねくり回したらyum updateが通らなくなった。

黒丸の部分がバレるとルーターのメーカーがバレる

続いて「ソフトウェアの選択」をクリック。

意外と忘れてそのまま進みがち

Oracle DBはインストール時にGUIを使うため、「サーバー(GUI使用)」を選択。下の画像ではなんとなくJava プラットフォームも入れてみた。

右のメニューはお好みでどうぞ

あとはインストールを開始を押すだけ。

依存性の確認が入るが待てばインストールの開始が押せるようになる

インストールを待っている間にROOTパスワードとユーザーの作成画面が出るので作成しておこう。
インストールが完了すると、再起動を求められるので再起動を押す。
再起動後はログイン画面が表示される。さっき作ったログインユーザーでログインする。
ログインすると言語やキーボードの初期設定が入るのでいい感じに設定。このままコンソール画面で「端末」を使って設定して行ってもいいが、とりあえず使い慣れたTera Termで色々やっていきたいので、DHCPでネットワークを設定したのであれば、まずはIPアドレスを確認しておく。
右上のトーナメント表みたいなマークをクリックして、出てきた画面で歯車を押す。

トーナメント表みたいなマークってなんて言えばいいんだろう
例によって一部マスク

表示されたIPアドレスでTera Term接続する。SSHは最初から使える。なお、Oracle DBインストールでGUIを使用するため、コンソール画面は閉じなくて良い。
ログインしたらとりあえずrootユーザーでログインして、yum updateしておく。アップデート終わったらrebootで再起動。

$ su -
# yum update
# reboot

Oracle Databaseのインストール

あとは基本的に下記の資料に沿って進めばいいのだが、ちょっとだけわかりにくいところがあるので補足しておく。
https://www.oracle.com/jp/a/tech/docs/technical-resources/19c-sidb-installationguide.pdf

まずは下記URLからインストールファイルをダウンロード。

https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html

色々あるけど選ぶのはこの画像の通り

ダウンロードしようとすると、Oracleプロファイルへのサインインを求められるので、まだアカウントをお持ちでない場合は作成しておこう。
ダウンロードできたら、サーバにアップロードする。
Tera Termの[ファイル]→[SSH SCP…]でファイル転送画面を開き、上の[…]でさっきダウンロードしたzipファイルを選択。

下はダウンロードなので使わない

To:に/var/tmpを入力し、[Send]でファイルをアップロードできる。自分はファイル一個ならこの方法で転送するが、もちろんWin SCPなどお好みのファイル転送ソフトを使ってよい。
続いて、「Oracle Preinstallation RPM」を使用する。これは、「Oracle DBで使うために必要な初期設定を自動的にやっときますよ」という素晴らしいもので、めちゃくちゃ楽にDBのインストールまで進められる。
下記コマンドを実行する。

# yum install oracle-database-preinstall-19c

これで、さっきの手順書の3.4~3.8は飛ばしていい。
続いてOracle DBのインストーラをGUIで使うための設定をコンソール画面の端末で行う。端末は下記の画像のようにクリックすれば開ける。

右クリックでメニューを開いて「端末」でもOK。というかそっちのほうが一般的

開いた端末で下記コマンドを実行。exportの行は公式手順書だと
export DISPLAY=localhost:0.0なのだが、何故かこれだとうまく行かなかった。調べるとDISPLAY=:0ならうまくいくという記事があったので参考にした。どうもlocalhost:0.0と:0は同じ意味らしいのだが……。(前はlocalhost:0.0でもうまく行ってたような)理由の分かる人いましたら教えてください。

# xhost + localhost
# su - oracle
$ export DISPLAY=:0

このコマンドをTera Term上で実行しても意味はないので要注意。
続いてインストールディレクトリを作成する。ここではインストール手順書のままで作成していく。

# mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
# mkdir -p /u01/app/oraInventory
# chown -R oracle:oinstall /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oraInventory
# chmod -R 775 /u01/app

いよいよOracle DBのインストールだ。まずはアップロードしたファイルを展開する。ダウンロードしてきたファイル名は公式の手順書と異なるので変えている。ここでrootユーザーのまま実行してしまうと、ファイルの権限がrootになりoracleユーザーで実行できないので要注意。(一敗)

$ su - oracle
$ unzip /var/tmp/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1

続いてGUIの端末で下記を実行。公式手順書ではこのあとにRUを適用したインストールと書かれているが、RUの入手は有償なので適用できない。

$ su -
# su - oracle
$ export LANG=ja_JP.utf8
$ cd /u01/app/oracle/product/19.0.0/dbhome_1
$ ./runInstaller

インストーラが起動したらあとは公式インストール手順書の通り進めていく。最初に「ソフトウェアの設定」を選んであとは基本的には次へ次へを押していけばいい。

データベースの作成はあとで作るのでここはソフトウェアのみの設定を選ぶ

スワップ領域の設定をいじってないので、前提条件のチェックでスワップ領域が足りてないと表示が出る。

今回はインストールするまでが目標なので気にせずいく

「次へ」を押して、「インストール」を押す。
インストールの進捗が流れていくが、途中で次のような画面が出て止まる。

下に書いてある1~4の通りにすればいい。

端末を立ち上げて、rootユーザーでログイン。

$ su -
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/oraInventory/root.sh

/u01/app/oraInventory/root.shを実行すると入力を求められるが、ここはEnterでデフォルトの[/usr/local/bin]になる。

Oracle TFAの構成ファイルが作成される……らしい(TFA使ったことない)

実行したら、さっきの画面に戻って[OK]を押す。押すとインストールが完了する。

ここまで長かった……

続いてoracleユーザーの環境変数を設定。

$ vi ~/.bash_profile 

以下を「export PATH」の前に追加して保存。

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

oracleユーザーにログインし直しでもいいが、sourceコマンドによる.bash_profileの読み込みでもいい。

$ source ~/.bash_profile

データベースの作成

続いてDBを作成していく。ここはもうインストール手順書の通り進めるので、記載は省略する。下記を端末で実行するとDBCAのGUIが起動する。

$ $ORACLE_HOME/bin/dbca

というわけでDBの作成が完了。

インストールに比べるとDB作成は簡単

続いて、ORACLE_SID を環境変数ファイル.bash_profileに追加する。

$ vi ~/.bash_profile 

以下を「export PATH」の前に追加して保存。

export ORACLE_SID=orcl

追加したら、bash_profileを読み直す。一応ORACLE_SID=orclになっているか、echoコマンドで確認しておく。

$ source ~/.bash_profile
$ echo $ORACLE_SID
orcl

最後にsqlplusでDB接続ができるか確認する。例としてDB作成時に設定したパスワードをOraPasswordとして下記に記載する。実際はもっと複雑な文字列でないと拒否されたはず。

[oracle@dbsrv1 ~]$ sqlplus system/OraPassword@dbsrv1:1521/orcl

SQL*Plus: Release 19.0.0.0.0 - Production on 土 715 11:08:01 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL>

エラーが表示されずに接続できたらOK!ここまでお疲れ様でした。

おわりに

ここでは説明しませんでしたが、インストールする前にPDBやCDBの知識は軽く持っておいたほうが良いと思います。
次はOracle Database23cのインストールもやってみたいですね。
それでは。

この記事が気に入ったらサポートをしてみませんか?