Oracle Database 19c 環境をDockerで作成してSQL Developerで接続する

2021/12/25に公開
1

概要

Oracle Silver SQL を受験するので、勉強用に Oracle Database 19c 環境を Docker で作成しました。
環境構築の方法から、SQL Developer を用いて接続するまでを記事にします。

12c の環境構築する方法が過去の記事にありましたので、環境構築の箇所は主に以下の記事を参考にさせていただきました。

https://qiita.com/gorilla0513/items/f22e8cce4e08da031abe

構築環境

  • macOS
  • Docker
  • docker-compose

手順

1.Oracle Database 19c をダウンロード

以下の URL から Oracle DataBase 19c の Linux x86-64 をダウンロードします。
エディションがいろいろありますが、今回は 19.3 - Enterprise Edition (also includes Standard Edition 2) をダウンロードしました。
ダウンロードには、Oracle のアカウント(Oracle プロファイル)が必要ですので、作成しましょう。

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

コンテナにビルドできる、バージョンは以下のビルド用のREADME に記述されています。

・ Oracle Database 21c (21.3.0) Enterprise Edition, Standard Edition 2 and Express Edition (XE)
・ Oracle Database 19c (19.3.0) Enterprise Edition and Standard Edition 2
・ Oracle Database 18c (18.4.0) Express Edition (XE)
・ Oracle Database 18c (18.3.0) Enterprise Edition and Standard Edition 2
・ Oracle Database 12c Release 2 (12.2.0.2) Enterprise Edition and Standard Edition 2
・ Oracle Database 12c Release 1 (12.1.0.2) Enterprise Edition and Standard Edition 2
・ Oracle Database 11g Release 2 (11.2.0.2) Express Edition (XE)

2.リポジトリをクローン

公式から docker image をビルドする用のリポジトリが用意されています。
このリポジトリをクローンして、ディレクトリに移動します。

git clone https://github.com/oracle/docker-images.git
cd docker-images

3. ダウンロードしたファイルを配置する

1 でダウンロードした zip ファイルをOracleDatabase/SingleInstance/dockerfiles/19.3.0に配置します。

cd OracleDatabase/SingleInstance/dockerfiles/19.3.0
mv ~/Downloads/LINUX.X64_193000_db_home.zip .

4. ビルドする

READMEを参考にして、ビルドします。
バージョンは 19.3.0 なので -v 19.3.0を指定、Enterprise Edition なので -eを指定しました。-iは MD5 のチェックサムを無視するらしいです、これがないとうまく Oracle を起動できなかったので、指定しました。

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

以下のメッセージがでたら成功です。

Oracle Database container image for 'ee' version 19.3.0 is ready to be extended:

--> oracle/database:19.3.0-ee

Build completed in 663 seconds.

5. docker-compose.yaml を作成

/docker-images/OracleDatabase/SingleInstance/dockerfilesdocker-compose.yamlを作成します。
後述するoradataと同じ階層にあれば、どこのディレクトリでも問題ないです。

docker-compose.yaml
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

データを保存しておくための、ディレクトリ(oradata)を作成します。

mkdir oradata
chmod 777 orada

6. コンテナを作成

コンテナを作成します。

docker compose up

docker 起動ログに以下の表示がされたら成功です。

#########################
DATABASE IS READY TO USE!
#########################

7. Oracle に接続する

以下のコマンドで、Oracle に入ります。

docker compose exec db sqlplus SYSTEM/Oracle19@ORCLCDB

以下のように、接続できたら成功です。

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Dec 25 08:13:50 2021
Version 19.3.0.0.0

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

Last Successful login time: Sat Dec 25 2021 08:07:58 +00:00

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

SQL>

8. SQL Developer で接続する

以下から、SQL Developer をダウンロードします。

https://www.oracle.com/jp/tools/downloads/sqldev-downloads.html

ダウンロードできたら、左上の緑色の「+」マークをクリックすることで、接続の設定がでてきます。
以下のように入力した後に「接続」ボタンをクリックすると、接続できます。

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

Discussion

chaconchacon

初めまして。
こちらの記事を基にoracleDBのコンテナを作成しようとしているものです。
こちらの方法で構築したところdocker compose up のコマンドで下記エラーが起きるのですが、何が原因があレバ教えていただけないでしょうか?
よろしくお願い致します。

エラーメッセージ
yaml: line 1: did not find expected ',' or '}'