Oracle Database 19cをOracle CloudのIaaS(computeインスタンス)へインストールする(Oracle Universal Installerを起動する)

####概要
ここではOracle Database19cをOracle CloudのIaaS(computeインスタンス)へインストールする手順の概要を説明します。インストールにはOracle Universal Installer(OUI)を使用する方法を紹介しています。

説明の中心はOracle Cloudのcomputeインスタンスで**OUIを起動するまでの手順**です。OUIが起動したのちは、インストーラーの指示に従うことでOracle Databaseをインストールできます。(オンプレミス環境でOUIでのインストールの経験がある方には、それほど戸惑うところはないと思います。)

OUIによるインストールを実施するためには、computeインスタンスで動作するGUIアプリケーションを、Oracle Cloudへ接続するPC上で表示させることが必要です。ここでは、computeインスタンスに**VNCServerをインストールして起動させることを想定しています。**

VNCServerのインストールと起動に関する手順の詳細はここでは説明していません(参考記事を紹介します)。VNCServerをインストールすることでOUIだけでなく、データベースを作成するためのGUIツール(dbca)も利用することができるようになります。

Oracle DatabaseをOracle CloudのIaaSへインストールする方法は、OUIを利用する以外に次の2つが考えらえます。本記事では詳細を説明しませんが、参考となるURLを紹介します。

+ RPMベースのOracle Databaseのインストール
RPMベースのインストールではVNCServerがなくともインストールが可能です。
(参考情報)
[Oracle Database 18cのマニュアル(日本語)より](https://docs.oracle.com/cd/E96517_01/ladbi/running-rpm-packages-to-install-oracle-database.html#GUID-BB7C11E3-D385-4A2F-9EAF-75F4F0AACF02)
[Oracle Database 19cのマニュアル(英語)より](https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/installing-oracle-database-using-rpm-packages.html#GUID-5AF74AC1-510E-4EB0-9BCA-B096C42C6A76)

+ Oracle Cloud Marketplaceを利用する方法
本記事の作成時点で、Oracle Databaseの12cR2と18c、19cをOracle CloudのIaaSへインストールする方法として、Oracle Cloud Marketplaceを利用する方法もあります。**(19cが追加されていたので追記しました(2020/5追記))**
(参考情報)
[Oracle Database App now available in the Oracle Cloud Marketplace](https://blogs.oracle.com/linux/oracle-database-app-now-available-in-the-oracle-cloud-marketplace)
[Oracle Cloud Marketplace/Oracle Database (Single Instance)](https://cloudmarketplace.oracle.com/marketplace/en_US/listing/47726045)

なお、computeインスタンスで動作するGUIアプリケーションを、接続するPC上で表示させる方法は、VNCServerを利用する以外にもあります。その点に関しては下記の記事が参考になります。(VNCServerを使わない方法でもOUIを起動することができます。)
[Windowsクライアントを使って、クラウド上のLinuxサーバでGUIアプリを実行したい](https://qiita.com/yamada-hakase/items/952406904beffb9f5e85)

**本記事の最後に、VNCServerではなくVcXsrvを利用する場合の手順の概要も参考情報として記載してます。**

2019年5月ごろの情報・環境を元にこの記事は記載しています。

####0.前提と作業の流れ
下記の3点を前提としています。

+ 作業用PCへのVNCクライアントのインストール
+ Oracle Linux 7.6のcomputeインスタンスのプロビジョニング
+ computeインスタンスへのVNCServerのインストールと起動

それぞれに関して説明します。

+ 作業用PCへのVNCクライアントのインストール
IaaSのComputeインスタンス(DBサーバーとなります)で動作させるVNCServerへアクセスするためのVNCクライアントが作業用のPCに必要です。

+ Oracle Linux 7.6のcomputeインスタンスのプロビジョニング
Oracle CloudのIaaSのcomputeインスタンスとして、Oracle Database 19cの要件をみたすOracle Linux 7.6のインスタンスを用意します(Oracle Linux 6はOracle Databse 19cでサーティファイされていません)。このcomputeインスタンスがDBサーバーとなります。

computeインスタンスのためには、コンパートメントとVCN(仮想クラウドネットワーク)が必要ですが、それらに手順に関しては下記の記事の(その1)～(その3)が参考になります。
[チュートリアル : Oracle Cloud Infrastructure を使ってみよう](https://community.oracle.com/docs/DOC-1019313)

**本記事ではVCN(仮想クラウドネットワーク)とVNCServerのVNCの両方が出てくるので注意ください。もし本記事の両者の記載が明らかに間違っていたら、変換して読んでいただけると和幸いです。**

+ computeインスタンスへのVNCServerのインストールと起動  
DBサーバーとなるcomputeインスタンスでVNCServerをインストールして起動していることを前提としています。

起動したVNCServerへ接続できるようにOracle Cloudのネットワークの設定も必要です。**ネットワークの設定に必要なのは、computeインスタンスのfirewallとVCN(仮想クラウドネットワーク)の両方で、利用するポートの通信を可能とすることです。**

本記事に詳細は記載しませんが、下記URLが参考になると思います。
https://blogs.oracle.com/cloud-infrastructure/nested-kvm-virtualization-on-oracle-iaas
この記事の中にある**「Installing VNC and Xorg packages for GUI Remote Connection」**の「Direct TCP / Unsecure」が比較的わかりやすいと思います。

3つの前提が完了しているとして、Oracle Database 19cのインストール手順は次の3つのステップになります。それぞれに関して本記事で説明していきます。
1. Oracle Preinstallation RPMのインストール
2. Oracle Universal Installerの起動
3. Oracle Databaseのインストール

####1.Oracle Preinstallation RPMのインストール
Linux環境用には、Oracle Databaseのインストール前に、必要なパッケージをインストールし、ユーザー、グループの作成を実施するツールOracle Preinstallation RPMが用意されています。

まずこのツールを実行します。DBサーバーにsshでログインし、rootユーザーにスイッチして、下記コマンドを実施します。

```
[root@ts-comp-db ~]# LANG=C yum install oracle-database-preinstall-19c
(略)
（途中 Is this ok [y/d/N]:  とパッケージのインストールに関して聞かれるので y と回答）
```

これで、**Oracle Databaseのインストールに必要なパッケージがインストール**され、**oracleユーザー, oinstallグループ, dbaグループが作成されます。**

(参考情報)
[Oracleインストール支援ツールを使う](http://www.intellilink.co.jp/article/column/oracle-yam06.html)
[Database Installation Guide for Linux (19c) / Installing the Oracle Preinstallation RPM with ULN Support](https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/installing-the-oracle-preinstallation-rpm-with-uln-support.html#GUID-AF94713E-97AF-4F20-8DBC-36BC383D0301)

####2.Oracle Universal Installerの起動
Oracle Universal Installerの起動まで、大体次のステップがあります。

1. Oracle Databaseのダウンロード
2. ユーザーの設定、インストール先のディレクトリの作成・設定
3. ダウンロードしたファイルの展開
4. xhostの実行、Oracle Universal Installerの起動

一つ一つ説明していきます。

#####2.1. Oracle Databaseのダウンロード
DBサーバーにVNCクライアントで接続します。（ここではVNCServerをopcユーザーで起動している前提としてます。）VNCクライアント上のデスクトップ画面のメニューから[Applications]-[Favorites]-[Firefox]と選択してブラウザを起動します。
![11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/fd5b4995-b05c-7aa6-b6d4-466d3e45d34e.png)
「oracle database 19c download」などのキーワードで検索して、Oracle Technology Network(OTN)からOracle Database 19cをダウンロードするサイトにアクセスします。(ダウンロードできるサイトであれば、どこでも構いません。)
![12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/d2d92dfe-cdb4-599e-28c7-d0ab3968b279.png)
OTNからのダウンロードには、アカウントとの作成とサインイン、License Agreementへの承認が必要です（アカウントは作成済みであれば、それを使います）。

それらを済ませて（チェックして）Oracle Database 19cをダウンロードしてcomputeインスタンス上に保存します。ここでダウンロードするのは、Oracle Universal Installer(OUI)でインストールするためのファイル(RPMでない方)です。
![12_b.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/b6126a34-82f2-f568-cd3d-3d3b42c9f212.png)

#####2.2. ユーザーの設定、インストール先のディレクトリの作成・設定
DBサーバーにsshでログインし、rootユーザーにスイッチしてから、下記コマンドを実施します。

```
[root@ts-comp-db ~]# passwd oracle 
oracleユーザーはOracle Preinstallation RPMで作成済みです。パスワードを設定します。
[root@ts-comp-db ~]# mkdir -p /u01/app/oracle
[root@ts-comp-db ~]# chown -R oracle:oinstall /u01/app
[root@ts-comp-db ~]# chmod -R 775 /u01/app/oracle
[root@ts-comp-db ~]# su – oracle

[oracle@ts-comp-db oracle]$ mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
(このディレクトリがORACLE_HOMEになる)
[oracle@ts-comp-db oracle]$ chgrp oinstall /u01/app/oracle/product/19.0.0/dbhome_1
[oracle@ts-comp-db dbhome_1]$ exit
[root@ts-comp-db ~]# exit
```

#####2.3. ダウンロードしたファイルの展開
DBサーバーにsshでログインし、opcユーザーで下記コマンドを実施します(前項の続き)。**ダウンロードしたzipファイルは、ORACLE_HOMEとなるディレクトリに展開します。**

```
[opc@ts-comp-db ~]$ cd Downloads  (ダウンロードしたファイルがopcユーザーの Downloadsにある場合)
[opc@ts-comp-db Downloads]$ sha256sum LINUX.X64_193000_db_home.zip
(念のためチェックサムを OTNのサイトの情報と同じか確認)
[opc@ts-comp-db Downloads]$ mv LINUX.X64_193000_db_home.zip /tmp
[opc@ts-comp-db Downloads]$ sudo su -
[root@ts-comp-db ~]$ chown oracle:oinstall /tmp/LINUX.X64_193000_db_home.zip
[root@ts-comp-db ~]# sudo su – oracle
[oracle@ts-comp-db ~]$ cd /u01/app/oracle/product/19.0.0/dbhome_1
[oracle@ts-comp-db dbhome_1]$ unzip /tmp/LINUX.X64_193000_db_home.zip
```
ここでOracle Database 12c R2より前のバージョンをインストールした経験のある方は「なぜORACLE_HOMEとなるディレクトリに展開するのだろうか？」と思われるかもしれません。

この点に関しては、Oracle Database 18cのインストールから変更されています。下記URLの情報が参考になります。
(参考情報)
[Oracle Database Databaseインストレーション・ガイド / イメージ・ベースのOracle Databaseのインストールについて](https://docs.oracle.com/cd/E96517_01/ladbi/about-image-based-database-installation.html#GUID-0315AA15-1C03-4E96-B801-3A8E5F5D4B39)
[Oracle Database 18c 新機能: インストール時の変更点](http://www.intellilink.co.jp/article/column/ora-report20190304.html)

#####2.4. xhostの実行、Oracle Universal Installerの起動
DBサーバーにVNCクライアントで接続します。(VNCクライアント上の)ターミナルからrootユーザーにスイッチして、下記コマンドを実施します。

```
[root@ts-comp-db ~]# export DISPLAY=:1
[root@ts-comp-db ~]# xhost +
access control disabled, clients can connect from any host
[root@ts-comp-db ~]# sudo su – oracle
[oracle@ts-comp-db ~]$ cd /u01/app/oracle/product/19.0.0/dbhome_1
[oracle@ts-comp-db dbhome_1]$ export DISPLAY=:1
[oracle@ts-comp-db dbhome_1]$ ./runInstaller
Launching Oracle Database Setup Wizard...
```
これでOUIが起動します。

![13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/b6866651-3484-84ef-a2d4-2e87fb426199.png)

####3.Oracle Databaseのインストール
OUIが起動したら、指示に従って必要な入力をしていきます。途中OUIがswapのサイズに関するワーニングを出しますが、インストールには問題がないことがほとんどです(なので無視しても構わないことがほとんど)。

Oracle Database19cから、Oracle Databaseのインストールの中で実行するいわゆる「rootスクリプト」を事前の設定でOUIに実行させることができます。そのための設定の画面が追加されてます。
![17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/c73b7829-222a-71f4-7f61-e86c1655c13a.png)
Oracle Cloudのcomputeインスタンスの環境では、rootユーザーのパスワードは設定されていません。ここでは、この項目はチェックしないで、OUIから指示にしたがって別のターミナルから、指示されたスクリプトをrootユーザーで実行することにします（従来からのインストール手順と同様です)。

OUIによるインストールが進み下記のような画面が表示されたら、別のターミナルからrootユーザーで画面に指定されているスクリプトを実行します。スクリプトの実行が終了したら、この画面に戻りOKをクリックします。
![22.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/c4f8417e-e949-44d2-de28-132488bfe10d.png)
この2つのスクリプトに関しては、下記のURLの記事が参考になります（ちょっと古いリリースに関する記事ですが参考になります）。
[誰でも簡単！Oracle Database 11g Release2のインストールと初期設定（インストール編）](https://www.ashisuto.co.jp/corporate/column/technical-column/detail/1198520_2274.html)

####4.（参考）インストール後の実施項目
ここまでの作業でOracle Databaseはインストールされていますが、インストール後に考えられる実施項目を2つ紹介します。

#####4.1.環境変数の設定
(オンプレミス環境と同様)oracleユーザーの環境変数を設定するようにします。下記は設定例です。

```
vi .bash_profile
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export NLS_LANG=Japanese_Japan.UTF8
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
```

#####4.2.ネットワークの設定
作成したデータベースインスタンスに、DBサーバー外からOracle Net(SQL*Net)で接続する場合、利用するポート(一般的には1521)での通信ができるように、下記の2点に関して設定が必要となります。

- DBサーバーのfirewallの設定
- VCNのSecurity Listの設定

VNCServerの設定の際に、5901などのポートでの通信のための設定をしていると思いますので、必要に応じて同じように設定します。

####5.（参考）VcXsrvを利用してOUIを起動する
ここまでの記事では、OUIを起動してPC上に表示させるためにVNCServerを利用しています。概要でも紹介しましたが、VNCServerを利用しないで、OUIをPC上に表示させる方法も考えられます。

下記が参考記事になります。
[Windowsクライアントを使って、クラウド上のLinuxサーバでGUIアプリを実行したい(1)](https://qiita.com/yamada-hakase/items/952406904beffb9f5e85)
[Windowsクライアントを使って、クラウド上のLinuxサーバでGUIアプリを実行したい(2)](https://qiita.com/yamada-hakase/items/80cef4ed58fefbba266b)

この記事で紹介されている「VcXsrv」を利用してOUIを起動する手順の概要を、この章で紹介します。

まずは上記の記事（特に２番目の記事「設定編」）にしたがって、computeインスタンスと接続するPC上の設定を実施してください。**PuTTYでcomputeインスタンスのopcユーザーで接続して「xeyes」をPC上に表示できるようにします。**

またcomputeインスタンス(DBサーバー)での、「Oracle Preinstallation RPMのインストール」「Oracle Databaseのダウンロード、展開」などは、この記事で紹介している手順と同じように実施します。

OUIの起動も、上記の記事で紹介されている「xeyes」の起動も、必要な手順に違いはありません(xeyesが起動できれば、OUIも起動できます）。

ただし、OUIの起動はOS(Linux)のoracleユーザーで実施する必要があります。computeインスタンスにsshで接続する際、opcユーザーで接続してからoracleユーザーにsuでスイッチしてOUIを起動することになります。このためX11のための設定をoracleユーザーで実施する必要があります。

まず、puttyでcomputeインスタンスに接続してDISPLAY環境変数を確認します。さらに```xauth listコマンド```でxauth COOKIEを確認します。下記のようになります(ts-comp-db-1というのは、この例のために利用したホスト名です)。

```
[opc@ts-comp-db-1 ~]$ echo $DISPLAY
localhost:10.0
[opc@ts-comp-db-1 ~]$ xauth list
ts-comp-db-1/unix:10  MIT-MAGIC-COOKIE-1  [32桁の16進数字(COOKIE)]
```

このxauth COOKIEは、puttyでcomputeインスタンスにopcユーザーで接続するたびに異なる値で設定されるので、このあとの手順含め、都度、設定します。

ここで確認した情報をoracleユーザーにスイッチして設定する必要があります。仮にDISPLAY環境変数の設定だけでは、下記のようなエラーになります。

```
[opc@ts-comp-db-1 ~]$ sudo su - oracle
Last login: Fri May 31 04:27:09 GMT 2019 on pts/0
[oracle@ts-comp-db-1 ~]$ export DISPLAY=localhost:10.0
[oracle@ts-comp-db-1 ~]$ echo $DISPLAY
localhost:10.0
[oracle@ts-comp-db-1 ~]$ xeyes &
[1] 18550
[oracle@ts-comp-db-1 ~]$ PuTTY X11 proxy: Unsupported authorisation protocol
Error: Can't open display: localhost:10.0

[1]+  Exit 1                  xeyes
```

```xauth addコマンド```でxauth COOKIEを設定します。xauth addに続けている引数は、opcユーザーで確認した際に表示されるディスプレイ番号以下の文字列を指定します。最初にこの設定をするときは.Xauthorityファイルがないので、そのことが表示されます。2回目以降は.Xauthorityがない、という表示はありません。

```
[oracle@ts-comp-db-1 ~]$ xauth add :10  MIT-MAGIC-COOKIE-1 [32桁の16進数字(COOKIE)]
xauth:  file /home/oracle/.Xauthority does not exist
[oracle@ts-comp-db-1 ~]$ ls -al
total 28
drwx------. 5 oracle oinstall 4096 May 31 04:41 .
drwxr-xr-x. 4 root   root       31 May 31 03:31 ..
-rw-------. 1 oracle oinstall  993 May 31 04:34 .bash_history
-rw-r--r--. 1 oracle oinstall   18 Aug 24  2018 .bash_logout
-rw-r--r--. 1 oracle oinstall  193 Aug 24  2018 .bash_profile
-rw-r--r--. 1 oracle oinstall  231 Aug 24  2018 .bashrc
drwxr-xr-x. 3 oracle oinstall   18 May 31 03:34 .cache
drwxr-xr-x. 3 oracle oinstall   18 May 31 03:34 .config
drwxr-xr-x. 3 oracle oinstall   19 May 31 03:43 .java
-rw-r--r--. 1 oracle oinstall  172 Aug 31  2018 .kshrc
-rw-------. 1 oracle oinstall   58 May 31 04:41 .Xauthority
```

このように.Xauthorityファイルが生成されます。これでoracleユーザーでもxeyesを起動できます。

```
[oracle@ts-comp-db-1 ~]$ xeyes &
```

![50.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/a655cf02-5a2f-139d-104f-cc1ade6bb4dd.png)

これでOUIを起動できるようになりました。

```
[oracle@ts-comp-db ~]$ cd /u01/app/oracle/product/19.0.0/dbhome_1
[oracle@ts-comp-db dbhome_1]$ ./runInstaller
```

下はOUIを起動してoracleのインストールを進めている途中の画面キャプチャです。
![52.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/5fb991c9-9064-5045-5529-afc5b2be6786.png)