1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerで構築したOracle Database のPre-Builtを試す

1
Posted at

はじめに

DockerでOracle Databaseを構築した場合、コンテナの起動に時間がかかることがあります。下記URLではその解決策として、Pre-Builtが紹介されています。

この記事では、実際にPre-Buildを試してみた手順を紹介します。

作成手順

1. Imageの作成

以下の手順にしたがって、Oracle DatabseのImageを作成します。

ここでは、Oracle Database 21c の Express Edition を利用します。

git clone https://github.com/oracle/docker-images.git
cd docker-images/OracleDatabase/SingleInstance/dockerfiles/
./buildContainerImage.sh  -x -v 21.3.0

2. Containerの作成

docker run -d --name oracle-build -e ORACLE_PWD=passw0rd oracle/database:21.3.0-xe

ORACLE_PWDにはSYS・SYSTEM・PDBADMINのパスワードを指定します。このパスワードは必ず控えておくこと。pre-built imageから起動したOracle Databseはここで指定したパスワードを利用します。

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

docker logsなどでoracle-buildのログをチェックし、上記のようなログが出力されたことを確認できたら、oracle-buildを停止します。

docker stop oracle-build

4. Pre-built Image の作成

Pre-built Imageを作成します。Tagはoracle/db-prebuilt:21.3.0-xeとします。

docker commit oracle-build oracle/db-prebuilt:21.3.0-xe

5. Containerの削除

oracle-buildを削除します。

docker rm oracle-build

稼働確認

Pre-Builtしたイメージを利用してみましょう。

まずContainer作成時に実行したいSQLファイルを./startupディレクトリに設置します。ここでは例として、HRDATAというテーブルスペースにHRスキーマを作成、employeesテーブルとテストデータを投入します。

./startup/install.sql
ALTER SESSION SET CONTAINER=XEPDB1;

CREATE TABLESPACE HRDATA DATAFILE '/opt/oracle/oradata/HRDATA.DBF' SIZE 10M AUTOEXTEND ON;
CREATE USER HR IDENTIFIED BY HRPASSW0RD DEFAULT TABLESPACE HRDATA QUOTA UNLIMITED ON HRDATA;
GRANT CREATE SESSION TO HR;

ALTER SESSION SET CURRENT_SCHEMA=HR;

CREATE TABLE employees (id INT NOT NULL PRIMARY KEY, name VARCHAR2(100));
INSERT INTO employees VALUES (1, 'Alice');
INSERT INTO employees VALUES (2, 'Bob');
INSERT INTO employees VALUES (3, 'Carol');

Containerを作成します。

docker run -d --rm -p 1521:1521 -p 5500:5500 \
   -v ./startup:/opt/oracle/scripts/startup \
   oracle/db-prebuilt:21.3.0-xe

任意のDBクライアントで接続を確認します。HR/HRPASSW0RD@localhost:1521/XEPDB1に接続すると、HR.EMPLOYEESテーブルとテストデータが作成されていることがわかります。

image.png

環境情報

C:\>ver

Microsoft Windows [Version 10.0.22631.3593]

C:\>wsl --version
WSL バージョン: 2.0.14.0
カーネル バージョン: 5.15.133.1-1
WSLg バージョン: 1.0.59
MSRDC バージョン: 1.2.4677
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22631.3593

C:\>docker version
Client:
 Cloud integration: v1.0.35+desktop.5
 Version:           24.0.7
 API version:       1.43
 Go version:        go1.20.10
 Git commit:        afdd53b
 Built:             Thu Oct 26 09:08:44 2023
 OS/Arch:           windows/amd64
 Context:           default

Server: Docker Desktop 4.26.1 (131620)
 Engine:
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       311b9ff
  Built:            Thu Oct 26 09:08:02 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.25
  GitCommit:        d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
 runc:
  Version:          1.1.10
  GitCommit:        v1.1.10-0-g18a0cb0
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?