Oracle DatabaseをDockerで立ててみた①

# はじめに

以前構築したローカル環境のDockerにOracle Databaseを動かします。

https://qiita.com/ShogoMatsumoto/items/64fd5ea58d25a54ff7f0


## 準備物
まずOracle社が提供しているDockerイメージとファイル一式をダウンロードします。
複数バージョンが存在しますが、今回は19cを立てようと思います。
以下から19.3.0フォルダとbuildContainerImage.shをダウンロードします。

https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance/dockerfiles

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/5d5f9722-9cab-f01c-8b99-9a8f1b782fd9.png)

OracleDatabase19cのLinux x86-64のzipをダウンロードします。

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/f1d51d3c-23d8-0471-c1c5-eef203660971.png)

ダウンロード後は任意の場所に最初にダウンロードした19.3.0フォルダとbuildContainerImage.shを配置し、フォルダ内にOracleDatabase19cのLinux x86-64のzipを配置します。

```
配置構成

-任意フォルダ
--19.3.0
---LINUX.X64_193000_db_home.zip
---その他ファイル
--buildContainerImage.sh
```

## Docker ビルド

Dockerを起動していない場合は起動させます。
`service docker start`

任意フォルダに移動してシェルファイルからbuildします。
`sudo bash ./buildContainerImage.sh -v 19.3.0 -e`


ビルドが完了すると下記のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/36f5a883-5722-1bbd-1bef-54054ae7094e.png)

## Docker 実行

下記コマンドでコンテナを実行します。
ORACLE_PWDは随時変更してください。

`docker run -d --name 19c -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=uJ8Vhd2S oracle/database:19.3.0-ee`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/13aabbaf-f93a-b0ba-e944-2cd3e7022cfe.png)

## Docker ログ確認

`docker ps -a`
`docker logs CONTAINER ID`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/fc504b02-6517-2daa-18c8-42b91cf2c8e7.png)

「**DATABASE IS READY TO USE!**」が確認できると接続できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/ac322715-6111-9197-2c57-92f55c94a54a.png)

Oracle SQL Developerで接続確認します。
接続を確認。
![スクリーンショット 2022-08-28 162403.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/764def00-707d-6f58-124f-606ff5e39dd0.png)

## sqlplusによる接続確認

下記コードを順に実行することでsqlplusがインストールできます。
```
# instantclient-basic取得
wget https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip

# instantclient-sqlplus取得
wget https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-sqlplus-linux.x64-21.4.0.0.0dbru.zip 

# sqlplus用ディレクトリ作成
sudo mkdir -p /opt/oracle

# 上記ディレクトリに解凍
sudo unzip -d /opt/oracle instantclient-basic-linux.x64-21.4.0.0.0dbru.zip

# 上記ディレクトリに解凍
sudo unzip -d /opt/oracle instantclient-sqlplus-linux.x64-21.4.0.0.0dbru.zip

# 解凍ファイル確認
cd /opt/oracle/instantclient_21_4 && find . -type f | sort

# 環境変数設定
export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_4:$LD_LIBRARY_PATH

# 環境変数設定
export PATH=$LD_LIBRARY_PATH:$PATH

# 環境変数読み込み
source ~/.bashrc

# インストールバージョン確認
sqlplus -V
```

インストール完了後dockerのIPを調べてsqlplusで接続します。

`ip -4 a show docker0`
`sqlplus sys/uJ8Vhd2S@//172.17.0.1:1521/ORCLPDB1 as sysdba`

接続を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/0ea45950-eb60-b0e4-e4e3-a4135f0199d4.png)

# 参考にさせて頂いたサイト
https://itedge.stars.ne.jp/docker_image_oracle_database_19c/
https://itedge.stars.ne.jp/docker_image_oracle_database_19c_error/
https://www.geeksforgeeks.org/how-to-install-sqlplus-on-linux/

これで以上となります。
見て下さってありがとうございます。