DockerでOracle Database Expressを使う
はじめに
dockerでOracle Database 11g Expressを使う手順。
OracleがインストーラとDockerfileを別々に配布しているため、ローカルでdocker buildする必要が有る。
環境
- Ubuntu 18.04.4 LTS (Bionic Beaver)
- Oracle Database 11g ExpressEdition
- oracle/docker-images
- Docker 19.03.6
dockerfileをclone
dockerfileを同梱したビルドツールをGitHubからクローンする。
git clone https://github.com/oracle/docker-images.git
Oracle Database XE本体をダウンロード
以下のサイトからXEをダウンロードする。
現時点(2020/02/28)では Oracle Database 11g Release 2 と Oracle Database 18c の2つバージョンが公開されている。11gと18cで仕組みやコンポーネントがかなり違うので要注意。
ダウンロードしたファイルをビルドツール内のディレクトリに配置する。
docker-images/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2
<!--
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ファイルを作成する。
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