😀

DockerでOracle Database Expressを使う

2020/03/01に公開

はじめに

dockerでOracle Database 11g Expressを使う手順。

OracleがインストーラとDockerfileを別々に配布しているため、ローカルでdocker buildする必要が有る。

環境

dockerfileをclone

dockerfileを同梱したビルドツールをGitHubからクローンする。

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

Oracle Database XE本体をダウンロード

以下のサイトからXEをダウンロードする。
現時点(2020/02/28)では Oracle Database 11g Release 2Oracle Database 18c の2つバージョンが公開されている。11gと18cで仕組みやコンポーネントがかなり違うので要注意。

ダウンロードしたファイルをビルドツール内のディレクトリに配置する。

11gインストーラ格納ディレクトリ
docker-images/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2

<!--

18cインストーラ格納ディレクトリ
docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0

-->

ビルド

dockerのbuildコマンドでイメージを作る。

ビルド用のスクリプトbuildDockerImage.shが公開されているのでこれを使う。引数の詳細は README参照のこと。

cd docker-images/OracleDatabase/SingleInstance/dockerfiles
./buildDockerImage.sh -v 11.2.0.2 -x

データベースファイル格納ディレクトリの準備

dockerがマウントするデータベースファイルを格納するディレクトリを用意する。

mkdir ./oradata
chmod 777 ./oradata

データベースファイルを作るのに10分以上かかるので、マウントをおすすめする。

docker-composeで起動

docker-composeファイルを作成する。

docker-compose.yml
version: "2"
services:
  db:
    image: oracle/database:11.2.0.2-xe
    container_name: oracle
    shm_size: 1g
    ports:
      - 1521:1521
      - 5500:5500
      - 8080:8080
    volumes:
      - ./oradata:/opt/oracle/oradata
    environment:
      - ORACLE_PWD=manager

docker-compose.ymlのポイントは以下。

<!--

  • imageには、11gまたは18cのバージョンを設定する。
    -->

  • shm_sizeは、Oracleが大量にメモリを消費するため、共有メモリ1GBを設定している。

  • ポート番号は、1521 (Oracle Listener), 5500 (OEM Express),8080 (APEX)の3つ。

  • ORACLE_PWDはOracleのパスワード。

次に、コンテナを起動する。

docker-compose up -d

コンテナの起動状況はログで確認する。

docker logs -f db

初期設定

sqlplusを起動する。

docker-compose exec db sqlplus system/manager@//localhost:1521/XE

EMなどで外部から接続できる設定をする。

EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

参考サイト

Discussion