macOSにDockerでOracle Database 19c(Linux x86-64)をインストール

約半年程の就活の結果、大変ありがたいことにシステム開発の企業に内定を頂けました。

１日でも早く戦力になりたいので、入社までの少しの間にしっかりと学習して技術を身に付けたいと考えています。

今回、データベース学習の一環として、入社予定の企業よりオラクルマスターの資格取得を勧められました。

基礎的なデータベース、SQLの知識が学べるので、未経験者にも有効と教えていただけたので早速オラクルを使ってみたいと思います。

## Oracle Database

個人学習であれば、完全版の製品を無償で使うことができるそうです。

### 事前準備

オラクルデータべースにはmacOS用がないので、[Docker](https://hub.docker.com/editions/community/docker-ce-desktop-mac)をインストールします。

![Screen Shot 0032-07-18 at 12.23.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/3062b372-d468-e01e-e054-11dbe88ff241.png)

インストールして起動すると、タブにクジラのマークが表示されます。
![Screen Shot 0032-07-18 at 12.26.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/03c3ea50-e3e1-643b-6c2f-23d11fbaad41.png)

### macOSへのインストール手順

まずは、オラクルのデータベースをインストールします。

1. [Oracle.com](https://www.oracle.com/jp/index.html)のユーザー登録
2. Oracleプロファイルにサインイン
3. [技術リソース](https://www.oracle.com/jp/technical-resources/)からダウンロード


今回は、`Oracle Database 19c` の `19.3` `Linux x86-64`をインストールしてみます。
![Screen Shot 0032-07-18 at 12.38.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/c1484780-aa8e-8b0c-57ea-23dce0c40fda.png)

GitHubの公式リポジトリからDockerイメージをダウンロードします。

```terminal:Terminal.app
git clone https://github.com/oracle/docker-images.git
```

ダウンロードした`docker-images`内の`dockerfiles`ディレクトリに移動します。

```terminal:Terminal.app
cd docker-images/OracleDatabase/SingleInstance/dockerfiles
```

![Screen Shot 0032-07-18 at 16.23.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/d46438e1-20a1-e9a7-cdba-91eeac4d1b21.png)


mvコマンドやFinderをつかって、[こちら](https://www.oracle.com/database/technologies/oracle-database-software-downloads.html)でダウンロードしたOracle Databaseのインストールバイナリ（zipファイル）をビルドしたいバージョンのディレクトリ直下に配置します。（※`LINUX.X64_193000_db_home.zip`といったファイル名です。解凍せずに配置します）

![Screen Shot 0032-07-18 at 16.13.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/9b294760-972c-5acd-5d14-e683ab9e28f1.png)

準備ができたら、バージョンを指定してビルドを実行します。

```terminal:Terminal.app
./buildDockerImage.sh -v 19.3.0 -e -i
````

[公式ドキュメント](https://github.com/oracle/docker-images/blob/master/OracleDatabase/SingleInstance/README.md)にも書いてありますが、

- オプションの`-e`は、`creates image based on 'Enterprise Edition'`
- オプションの`-i`は、`ignores the MD5 checksums` (※OSXは必要）

となっています。


ビルドが実行され、完了すると下記のようなメッセージが表示されます。

```terminal:Terminal.app
Successfully built 45c638577f4f
Successfully tagged oracle/database:19.3.0-ee

Oracle Database Docker Image for 'ee' version 19.3.0 is ready to be extended: 
    
    --> oracle/database:19.3.0-ee

  Build completed in 2972 seconds.
```

`docker images`で情報が取得できていれば、ビルドができていることが確認できます。

```terminal:Terminal.app
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
oracle/database           19.3.0-ee           45c638577f4f        42 minutes ago      6.54GB
oraclelinux               7-slim              153f8d73287e        30 hours ago        131MB
```

イメージからコンテナを起動します。

`docker run`コマンドの形式は、
`$ docker run [オプション] イメージ[:タグ|@ダイジェスト値] [コマンド] [引数...]`となります。

```terminal:Terminal.app
docker run --name docker_oracle  -p 1521:1521 -p 5500:5500  oracle/database:19.3.0-ee
```
しばらく待って、`DATABASE IS READY TO USE!`が表示されるとビルド成功です。結構、時間がかかります。

```terminal:Terminal.app
Database creation complete. For details check the logfiles at:
 /opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details.

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jul 18 11:40:30 2020
Version 19.3.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> 
System altered.

SQL> 
System altered.

SQL> 
Pluggable database altered.

SQL> 
PL/SQL procedure successfully completed.

SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
```

システムユーザー用のパスワードも表示されるので控えておきます。

```terminal:Terminal.app
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: [パスワード]
```

### SQLへの接続

Dockerコンテナの情報を確認します。

```terminal:Terminal.app
docker container ls

CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                  PORTS                                            NAMES
8378ab904f59        oracle/database:19.3.0-ee   "/bin/sh -c 'exec $O…"   22 hours ago        Up 22 hours (healthy)   0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp   docker_oracle
```

一番左の`CONTAINER ID`を確認して、下記の[コンテナID]を書き換えて実行します。

```terminal:Terminal.app
docker exec -it [コンテナID]  bash -c "source /home/oracle/.bashrc; sqlplus /nolog"

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jul 19 08:29:34 2020
Version 19.3.0.0.0

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

SQL> 
```

続く...

## 参考・使用サイトリンク
◆Qiita
[OS X 10.11で，Oracle Database 12cのDocker Imageを使ってみた](https://qiita.com/lethe2211/items/0bb493fa93a0088cfac9)
[CentOS7上のDockerにOracle19cを構築してみた](https://qiita.com/tori15specr/items/50149eb8d49eddba2718)


◆GitHub
[GitHug:oracle/docker-images](https://github.com/oracle/docker-images)
[GitHub:Oracle Database on Docker](https://github.com/oracle/docker-images/blob/master/OracleDatabase/SingleInstance/README.md)

◆Oracle
[Oracle Database Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/index.html)
[Docker : Oracle Database on Docker](https://oracle-base.com/articles/linux/docker-oracle-database-on-docker)
[oracle Database ソフトウェア・ダウンロード](https://www.oracle.com/jp/database/technologies/oracle-database-software-download.html)

◆Youtube
[Install Oracle database on Docker and connect with SQL Developer](https://www.youtube.com/watch?v=ciYsDbBx80s)