Oracle Linux 8にOracle Database 21cをインストールしてみた

# はじめに
今回はOracle Linux 8.5にOracle Database 21c (21.3.0.0.0)をインストールする手順を紹介する。
日本オラクルによる公式のインストレーションガイドも同時に参考にするとよい。
>[Oracle Database 21c (21.3.0.0.0)　単一インスタンス･データベース　インストレーション・ガイド Linux86-64版(pdf)](https://www.oracle.com/jp/a/tech/docs/technical-resources/21c-sidb-installationguide.pdf)

# 事前準備
## Oracle Preinstallation RPMをインストールする
Oracle Preinstallation RPMを使用することで、必要なパッケージのインストールやカーネルパラメータの設定、ユーザーの作成など関連するOSの設定を自動的に行えるため使用することをおすすめする。
### Oracle Preinstallation RPMのインストール方法
インストールする場合、ターミナルを立ち上げて以下のコマンドをrootユーザーで実行する。

```root:rootユーザー
yum install -y oracle-database-preinstall-21c.x86_64
```
### ユーザーの確認と設定
Oracle Preinstallation RPMのインストールによってOracle Databaseをインストールするoracleユーザーが設定されているか以下のコマンドで確認する。

```root:rootユーザー
id oracle
```

```root:実行例
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
```
作成されたoracleユーザーのパスワードを以下のように設定する

```root:rootユーザー
passwd oracle
```
## インストールに必要なディレクトリを作成する
以下のコマンドでディレクトリを作成する。ここで作成する```/u01/app/oracle/product/21.3.0/dbhome_1```がORACLE_HOMEである。

```root:rootユーザー
mkdir -p /u01/app/oracle/product/21.3.0/dbhome_1
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01
```

## Oracle Database 21cのインストールファイルをゲストOS(Oracle Linux 8)に用意する
### Oracle Database 21cをダウンロードする。
[こちらのサイト](https://www.oracle.com/jp/database/technologies/oracle-database-software-downloads.html#19c)からホストOSにOracle Database 21c (21.3.0.0.0)をダウンロードする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/472e345d-983e-9093-580d-4622ca801c2b.png)
### ダウンロードしたインストールファイルをホストOSからゲストOSに移行する
今回はコンピュータ間でファイル転送を行うSSHクライアントのアプリケーションソフトウェアであるWinSCPを使用する。

WinSCPを開いてゲストOSの情報を入力して"ログイン"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/57f4632e-c128-ae3e-c50e-a850c7c577dc.png)
接続できたら、ホストOSにダウンロードしたOracle Database 21cのzipファイルを選択し、"アップロード"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/894cff55-85bb-5fa6-5b5e-82f4ecc4b92a.png)
ゲストOS上で配置したいディレクトリを選択する。今回は/home/oracleを選択した。選択後、"OK"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/99c3126c-440b-8faf-93b7-9a0db814c330.png)
転送が開始する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/aa183453-383b-af03-8453-c3dd52a121a5.png)
転送されていることが確認できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/d249f8ad-ceae-6794-32c4-75afe8f789ae.png)
### Oracle Database 21cのインストールファイルをORACLE_HOMEに展開する
以下のコマンドをoracleユーザーで実行して```/home/oracle```に配置したインストールファイルをORACLE_HOMEに展開する。file_nameにインストールファイルのファイル名を入力する。

```oracle:oracleユーザー
unzip ~/file_name.zip
```
# OUI(Oracle Universal Installer)を実行してOracle Database 21cをインストールする
ORACLE_HOME上にあるインストーラーを起動する。また今回はOUIの画面表示の言語を日本語とする。

日本語の設定

```oracle:oracleユーザー
LANG=ja_JP.UTF-8
```

インストーラーの起動コマンド

```oracle:oracleユーザー(ORACLE_HOME)
./runInstaller
```

インストーラーが起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/653feeed-d03c-2786-70b9-cc00d302f20c.png)
構成オプションを選択する。"ソフトウェアのみの設定"を選択し、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/aa28839f-e615-9713-1388-00b6100e8ebc.png)
"単一インスタンス・データベースのインストール"を選択し、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/54bc6761-e723-e7ff-8c81-5a154a162c13.png)
"Enterprise Edition"を選択し、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/7312188a-554f-5ab6-7b47-684162513279.png)
Oracleベースのディレクトリを```/u01/app/oracle```と設定して"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/5c13c8b0-71d3-214e-8941-324e921d0b21.png)
インベントリ・ディレクトリを```/u01/app/oraInventory```と設定し、orainventoryグループ名を"oinstall"として"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/79159e7d-5901-eba0-f2b3-850a4a2bdcc2.png)
インストールの事前準備で作成したOSグループを指定する。デフォルトのまま"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/497c594c-434a-7449-2092-e65968b9e665.png)
"構成スクリプトを自動的に実行"、"rootユーザーの資格証明を使用"を選択して、rootユーザーのパスワードを入力し、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/a4d0305a-ed6f-1386-b1c7-c62ac904a4da.png)
前提条件チェックの実行が開始する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/198e995e-1077-2394-fb56-82fe71c8be2b.png)
前提条件チェックに問題があった場合以下のように表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/7024bbd2-f356-7ae1-13ac-b46c22f5273a.png)
"詳細"をクリックして適宜修正を行い、修正後"再チェック"をクリックして、前提条件チェックを実行しなおす。なお、今回表示されているスワップ領域の不足に関する対応方法は以下の記事を参考にするとよい。

https://qiita.com/tk_miya/items/a17ec548ce19e232c4ae

前提条件チェックに問題がなければサマリー画面に遷移する。設定を確認して、問題がなければ"インストール"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/8a04ec2b-5c2a-00f5-af59-508cc3cecc55.png)
インストールが開始する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/492f9470-ae5c-c1ff-d8c4-4f503eb484cd.png)
構成スクリプトを自動的にrootユーザーで実行するように設定したため、確認ウィンドウが表示される。そのまま"はい"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/ac0932f1-a374-0a0d-499d-6cfb6b86b2f7.png)
インストールが完了すると終了画面が表示される。"閉じる"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/8d0f9991-198d-65ec-e5e7-fae861e29063.png)
これで、Oracle Databaseのインストールは完了。
# 環境変数を設定する
oracleユーザーの環境変数を.bash_profileに設定する。
viエディタで以下の内容を追記する。

```oracle:.bash_profile
umask 022 
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/21.3.0/dbhome_1
export ORACLE_BASE_HOME=/u01/app/oracle/homes/OraDB21Home1
export ORACLE_BASE_CONFIG=/u01/app/oracle
export PATH=$ORACLE_HOME/bin:$PATH 
export LANG=ja_JP.UTF-8 
export NLS_LANG=Japanese_Japan.AL32UTF8
```
設定後oracleユーザーに再ログインすることで環境変数が反映される。
# DBCAを実行してデータベースを作成する
oracleユーザーで以下のコマンドを実行してDBCAのウィンドウを立ち上げます。環境変数の設定によってPATHが通っているため任意のディレクトリから実行可能です。

```oracle:oracleユーザー
./dbca
```

DBCAが立ち上がる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/c1144498-4e7c-bf5b-c198-0f1121811b68.png)
"データベースの作成"を選択して、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/c0967195-d07b-d252-ee23-699cbbc72977.png)
"拡張構成"を選択して、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/b86dcdd0-f115-76ce-bc6e-7700f61d8245.png)
データベース・タイプは"Oracle単一インスタンス・データベース"を選択し、"汎用またはトランザクション処理"を選択して、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/f23bf9d3-9ccb-2f98-4176-f12f2835a3d0.png)
ここではグローバル・データベース名、SID、PDBの設定をする。今回は以下のように設定し、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/562e1a6a-c88f-ee1f-7e94-29bc131dddb0.png)
"データベース記憶域属性に次を使用"を選択し、デフォルトのまま"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/ba147b24-c79a-2a23-e6fe-a6709efb6e6a.png)
"高速リカバリ領域に指定"と"アーカイブ有効化"の両方にチェックを付けて、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/b4b456f5-487f-cecf-7140-1ad145f05237.png)
"新規リスナーの作成"にチェックを付ける。リスナー名とリスナー・ポートはそれぞれ"LISTENER""1521"とするして、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/2f6f5784-5bc4-afbb-f5cc-b142c128c546.png)
オプション機能であるOracle Data VaultとOracle Label Securtityの構成をするか選択する。今回はどちらも選択せず、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/06165726-73f8-b68c-9318-c8dbbc2d3d83.png)
ここでは、メモリー、サイズ設定、文字セット、接続モードの設定をそれぞれ行う。今回はすべてデフォルトのまま"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/41bdebd2-6ba6-fb15-4649-129164e6345c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/9ac05ef0-124d-33b3-383b-3e7e0608a586.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/e1197f94-ccd8-3924-3f22-0b5917a74d65.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/aaa2f9cf-2b5b-8d7f-aef2-e91aa9b72fbe.png)
ここでは、Oracle Enterprise Manager Database Express(EM Express)、またはOracle Enterprise Manager Cloud Control(EMCC)、あるいは両方を使用してOracle Databaseを管理するか選択できる。今回はどちらにもチェックをつけずに"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/0a447ad7-13af-12b9-9dfd-2c59e9dfdbef.png)
"すべてのアカウントに同じ管理パスワードを使用"を選択して、任意のパスワードを入力し、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/1ca69ae6-60ad-bce8-7a78-a3d026739696.png)
"データベースの作成"を選択し、"次へ"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/937ac930-7d64-56c7-201d-49bf01df864b.png)
サマリーの画面で各設定を確認し、問題がなければ"終了"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/ab290f0f-9569-9f19-9da5-c7e9bab098d2.png)
データベースの作成が開始する。1時間ほどかかった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/d2fc9056-44c0-1380-15b6-6c349969c2fd.png)
データベースの作成が完了すると以下のウィンドウが表示される。"閉じる"をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/6239aaf3-f7c6-b95e-38a6-01cfd23987a9.png)
これで、データベースの作成が完了。
# 環境変数ORACLE_SIDを設定する
oracleユーザーの環境変数に、作成したデータベースのOracleインスタンスの識別子(SID)を設定する。
viエディタで.bash_profileに以下の内容を追記する。

```oracle:.bash_profile
export ORACLE_SID=orcl
```
設定後oracleユーザーに再ログインすることで環境変数が反映される。
# データベース作成後の確認
SQL*PlusでCDBへ接続確認する。
以下のコマンドを実行してsysユーザーでSQL*Plusにログインする。

```oracle:oracleユーザー
sqlplus / as sysdba
```

```oracle:実行例
$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on 金 1月 28 17:59:45 2022
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.



Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
SQL> 
```

接続しているコンテナを以下のコマンドで確認する。

```oracle:SQL
show con_name
```

```oracle:実行結果
CON_NAME
------------------------------
CDB$ROOT
SQL> 
```

CDBへの接続が確認できた。
続いて、DBCAで作成したPDBが存在するか以下のコマンドを実行して確認する。

```oracle:SQL
show pdbs
```

```oracle:実行結果
 CON_ID 　　CON_NAME			  OPEN MODE  RESTRICTED
---------　---------------------- ---------- ----------
	 2 　　　PDB$SEED			  READ ONLY  NO
	 3 　　　ORCLPDB1			  READ WRITE NO
```

作成したORCLPDB1が確認できた。

以上で完了！
# まとめ
今回はOracle Linux 8.5にOracle Database 21c (21.3.0.0.0)をインストールする手順を紹介した。この記事では環境を手早く構築することを目的としているため、設定の細かい説明を省いている箇所が多いので、詳細な説明が必要な場合は冒頭でも紹介した、
>[Oracle Database 21c (21.3.0.0.0)　単一インスタンス･データベース　インストレーション・ガイド Linux86-64版(pdf)](https://www.oracle.com/jp/a/tech/docs/technical-resources/21c-sidb-installationguide.pdf)

を参考にするとよい。さらに、RAC構成のインストレーションに興味のある方は以下のガイドをおすすめする。

>[Oracle Database 21c (21.3.0.0.0)　Real Application Clusters インストレーション・ガイド Linux86-64版(pdf)](https://www.oracle.com/jp/a/tech/docs/technical-resources/21c-racdb-installationguide.pdf)

今回作成した環境を利用してOracle DatabaseやSQLなどの様々な検証にぜひ活用していただきたい。