ORACLE MASTER Gold DBAの学習用のDB環境構築方法

# はじめに
ORACLE MASTER Gold DBA 2019での学習のために、必要最低限の動作確認ができる環境構築を作成してみたのでご紹介します。
こちらの資料が大元になります。Gold DBA資格取得のための学習計画を詳細に記載していますのでよろしければご参照ください。

https://qiita.com/shokawakita0630/items/9ad75b6b8e9e4bcdfbb0

私は、Dockerで環境構築を行なったため今回はその方法をご紹介します。私がつまづいたポイントとともにご紹介を行いますので、初心者の方でもわかるように気をつけていますのでよろしければご参照ください。

## 前提事項
・Oracle環境をDockerを活用して構築する
・MacOS（Linux環境）で行う
・OracleGrid Infrastructureは考慮しない
・DBCAやDBUAの画面を使っての操作は、確認しない方針
・シングルインスタンスのマルチテナントコンテナデータベースを作成する
・バージョンはOracle Database 19c で作成する

## 準備する
macOS
Oracleのアカウント作成
Dockerのインストール
VSCodeのインストール（MACのターミナルでも操作は可能なため任意）

### 準備方法

#### Oracleのアカウント作成方法

https://www.oracle.com/jp/education/guide/newuser-172640-ja.html

#### Dockerのインストール

https://qiita.com/R_R/items/a09fab09ce9fa9e905c5

#### VSCodeのインストール

https://qiita.com/watamura/items/51c70fbb848e5f956fd6

### Windowsの環境構築との違い

:::note
Windows：インストール後、setup.exeで起動するだけで利用可能
Linux：インストール後、仮想環境を構築すると利用可能
:::

・Windowsの環境構築方法

https://shift101.hatenablog.com/entry/2021/02/12/183000

・MACの環境構築方法

https://zenn.dev/msksgm/articles/20211225-oracle-database-19c-docker

:::note warn
macOSなどのLinux環境構築方法とWindowsの環境構築方法は違いがある。Linux環境では、Oracleからパッケージをダウンロードしただけでは、動作しないため、Dockerなどをインストールして環境構築する必要がある。
:::

## 手順
１. 資料の1から6までを行う。
２. コマンドを実行する



### １. 資料の1から6までを行う。

・資料

https://zenn.dev/msksgm/articles/20211225-oracle-database-19c-docker

#### 手順実行時の補足
##### ・Docker Compose execでの確認
SQLPlusの操作のみの確認を行いたい場合は、資料の手順7の
```
docker compose exec db sqlplus SYSTEM/Oracle19@ORCLCDB
```

文を実行すれば確認可能。また、RMANの操作のみの確認を行いたい場合は、

```
docker compose exec db rman target SYS/Oracle19@ORCLCDB
```

分を実行すれば確認可能。
上記のコマンド実行後、コンテナを停止したい場合は、
```
exit
```
を実行すれば停止可能。

##### ・Docker Compose execの制限
・デフォルトインストールで、上記のコマンドを利用すると、例えばデータベースの停止操作を行なった時に、再起動するためのローカル接続が、tnsnames.oraファイルに記載されていないため、実行できない（「Docker Compose exec」した状態で、tnsnames.oraファイルの編集などの操作方法が私にはできなかった）。そのため、このままだと、Gold資格の確認をする状態として適切ではないため、次の手順を実行して、任意の操作をできるようにする。
（私はこの解決方法を探すのにとても苦労しました）

### ２. コマンドを実行する
ディレクトリ「OracleDatabase/SingleInstance/dockerfiles/19.3.0」で、以下のコマンドを入力することで、「Docker Compose exec」していない状態で、コンテナの中身を確認することができる。

・コマンド
```
docker exec -ti dockerfiles-db-1  /bin/bash
```

・実行結果
![スクリーンショット 2024-07-16 8.03.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885241/988c7c33-de13-8345-9c8f-d2ef6342fe6e.png)

初期は、「/home//oracle」配下に位置する。
入力の左側が、「bash-4.4$」になる。（今の状態はDockerを利用してOracleのパッケージを解凍した時のフォルダの中身をコマンド操作で見ているイメージ）
こちらも「exit」コマンドで戻ることが可能。

#### 手順実行時の補足

##### ・Docker Compose execを実行した時とのSQLPlusへのログイン方法の違い

手順2実行後、SYS権限でSQLPlusにログインするには以下のコマンドを実行する。
```
sqlplus SYS/Oracle19@ORCLCDB as SYSDBA
```
手順2を実行すると、資料の手順7の
```
docker compose exec db sqlplus SYSTEM/Oracle19@ORCLCDB
```
のような、「Docker Compose exec db」というコマンドを入力せずに、通常のOracleの文法を利用することができる

## 確認時に使用するコマンドの説明
上記で、環境構築方法については、完了です。ここからは、実際にデータベース内で、動作などの確認をする際に使用する操作について説明してきます。
※以下の実行時の確認等は、インストール後のデフォルトの操作になります。

### ・Oracle_BASEおよびOracle_HOMEのパス確認方法

以下のコマンドで確認可能。ORACLE_HOMEから、コマンド操作をして、高速リカバリ領域やリスナーなどのファイルの構成などを確認することができる。

ORACLE_BASEのディレクトリパスの確認
```
bash-4.4$ orabase
```
ORACLE_HOMEのディレクトリパスの確認
```
bash-4.4$ orabasehome
```

※ORACLE_BASE・ORACLE_HOMEの詳細については、「オラクルマスター教科書 Gold DBA Oracle Database Administration Ⅱ」の
「24-1-2　読取り専用Oracleホームのファイル配置」を確認してください。

https://www.shoeisha.co.jp/book/detail/9784798174365

・デフォルトの実行時
![スクリーンショット 2024-07-16 8.26.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885241/6f01b63b-61e6-0094-5f8b-991eb9d8ca5a.png)

### ・基本的なコマンドでの操作方法
:::note
・現在位置しているファイルパスの確認方法は、「pwd」コマンドを利用する
・指定ファイルへの移動方法は、「cd」コマンドを利用する。
・現在存在するディレクトリは以下のファイル構成をすべて確認するには、「ls」コマンドを利用する。
・指定ファイルの中身は「cat」コマンドを利用する。
・指定ファイルの編集は「vi」コマンドを利用する。
:::

※「vi」コマンドの詳細の使用方法については、以下参照。

https://www.cc.u-tokyo.ac.jp/public/VOL3/No5/vi-editor-guide.pdf

#### コマンド

ファイルパスの確認
```
bash-4.4$ pwd
```

ORACLE_HOMEのディレクトリに移動
```
bash-4.4$cd /opt/oracle/product/19c/dbhome_1
```
一つ上のディレクトリに移動
```
bash-4.4$cd ..
```

ORACLE_HOMEのディレクトリ配下のファイル構成を確認
```
bash-4.4$ls
```

ファイルの中身の確認
```
bash-4.4$cat
```

#### ユースケース
例1 
ORACLE_HOMEに移動して、ディレクトリ配下のファイル構成を確認
![スクリーンショット 2024-07-16 8.34.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885241/c1ac83a3-7cd1-dd9c-2d1c-966e94b2a229.png)

例2
ORACLE_HOMEから一つ上のディレクトリに移動
![スクリーンショット 2024-07-16 8.47.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885241/47c1ea7f-5f49-1c7a-f1c0-af3aa87d71cd.png)

例3
ORACLE_HOMEからtnsnames.oraファイルが配置されているディレクトリに移動して中身を確認
![スクリーンショット 2024-07-16 8.52.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885241/7e2257dc-6c38-a230-eb8d-bb6c74fa36e1.png)