Oracle Database 19c Docker構築手順

Silver SQL 試験勉強用に構築する。

<!-- omit from toc -->
## 環境
- 2024/02/23 実施
- MacOS Sonoma
- Git導入済み
- Docker / Docker Desktop 導入済み
	- From Homebrew

<!-- omit from toc -->
## 手順
- [1. Oracleプロファイル(アカウント)作成](#1-oracleプロファイルアカウント作成)
- [2. Oracle Database 19cのファイルをDL](#2-oracle-database-19cのファイルをdl)
- [3. リポジトリ取得](#3-リポジトリ取得)
- [4. DLしたファイルをリポジトリに配置](#4-dlしたファイルをリポジトリに配置)
- [5. Dockerイメージビルド](#5-dockerイメージビルド)
- [6. docker-compose.yml作成](#6-docker-composeyml作成)
- [7. コンテナ作成](#7-コンテナ作成)
- [8. 動作確認](#8-動作確認)
- [9. クライアントツール導入](#9-クライアントツール導入)

## 1. Oracleプロファイル(アカウント)作成
DatabaseのファイルをDLするのに必要。

https://profile.oracle.com/myprofile/account/create-account.jspx

## 2. Oracle Database 19cのファイルをDL
**バージョンについて**
構築時は18c・19c・21c・23cがあった。
- 18c・21cは革命期と呼ばれるバージョンでサポートが短い
- 23cは新しすぎる（し、今回は試験の勉強用なのでそんな新機能いらない）
- 19cがLTS

というわけで、下の方にある19cのやつを選ぶのだが、注意点がいくつか。
- コンテナはLinuxなので、「Linux x86-64」を使う
- エディションは「EE includes SE2」（といっても一つしかないが）
- MacがIntelか、M1チップかで変わる（はまった）
	- Intelの人はx86なので、「Oracle Database 19c for Linux x86-64」の方
	- M1の人はARM86なので、「Oracle Database 19c for LINUX ARM (aarch64)」の方

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

## 3. リポジトリ取得
Database以外にもいろんなものが入っているが、今回はデータベース構築。
docker-images/OracleDatabase/SingleInstanceのREADMEを参考に進める。

```sh
git clone https://github.com/oracle/docker-images.git
cd docker-images/OracleDatabase/SingleInstance/dockerfiles
```

## 4. DLしたファイルをリポジトリに配置
```sh
mv ~/Downloads/LINUX.X64_193000_db_home.zip ./19.3.0/
```

## 5. Dockerイメージビルド
READMEに則り。
`-v`はバージョン、`-e`はEnterprise Edition
（`-i`をつけるとchecksumをしないよう。もしエラーが起きたらつけてみて。自分はエラー起きなかった）

```sh
./buildContainerImage.sh -v 19.3.0 -e
```

## 6. docker-compose.yml作成
自分はvolumeを作成した。
作成場所はどこでもいいが、dockerfiles/配下がわかりやすいかな。（カレントディレクトリ）

```yml:dokcer-compose.yml
version: "3.9"
services:
  db:
    image: oracle/database:19.3.0-ee
    ports:
      - 1521:1521
      - 5500:5500
    volumes:
      - oradata:/opt/oracle/oradata
    environment:
      - ORACLE_PWD=Oracle19
      - ORACLE_PDB=oracle
volumes:
  oradata:
```

## 7. コンテナ作成
`-d`でバックグラウンド実行。
```sh
docker compose up -d
```

下記が出れば完了。（出るまで結構時間かかる）
```log
#########################
DATABASE IS READY TO USE!
#########################
```

## 8. 動作確認
`sqlplus [ユーザー名]/[パスワード]@[connect_identifier？]`のよう
```sh
docker compose exec db sqlplus SYSTEM/Oracle19@ORCLCDB
```

下記出ればOk。
```log
SQL>
```

## 9. クライアントツール導入
色々あるけど、試験勉強なのでOracle SQL Developerは入れておく。
（これはサインイン不要っぽい）
Mac IntelはOSXの方、Mac M1はARM64のほうかな。

https://www.oracle.com/jp/database/sqldeveloper/technologies/download/

インスコしたら、左上の緑`+`を押下。
設定項目は下記。

| 項目                 | 入力内容              |
| -------------------- | --------------------- |
| Name                 | Oracle 19c docker（任意） |
| データベースのタイプ | Oracle                |
| ユーザー名           | system                |
| パスワード           | Oracle19              |
| ホスト名             | localhost             |
| ポート               | 1521                  |
| SID                  | ORCLCDB               |

ほかも色々あるけど好みで。自分なら
- （Winのみ）A5:SQL
- （Win/Mac）DBeaver
のどっちかかな（独断と偏見）。設定は項目名とか違えど、大体同じのはず。

<!-- omit from toc -->
## 参考
https://zenn.dev/msksgm/articles/20211225-oracle-database-19c-docker#3.-%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B
https://zenn.dev/ncdc/articles/ff5a573eac5d22
https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance