5
5

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 3 years have passed since last update.

CentOS7上のDockerにOracle19cを構築してみた

Posted at

コロナ対応で在宅勤務となったので、
今まで興味はあったものの手を出せていなかったDockerを使ってみる。

Dockerのインストールは省略して、
今回はOracle19cでコンテナを構築する手順を紹介。

用意するもの

Docker
以下記事を参照。
LinuxにDockerをインストールする
Oracle19c(本体)
公式サイトからLinux版をダウンロード。
仮想環境
VMWare Workstation15 Player
CentOS7(仮想上にある既存の環境を使用)

手順

1. 仮想マシンの準備

Oracleの要件を満たすスペックが必要。
メモリ3G、HDD100G程度を仮想マシンに割り当て。

2. Gitから公式リポジトリをclone

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

コマンドを実行した場所以下に、docker-imagesディレクトリができる。

3. Oracle19cを仮想OSへコピー

公式よりダウンロードしたLINUX.X64_193000_db_home.zipをWinSCP等で仮想OS側へコピー。

4. Oracle19cを所定のディレクトリへ配置

cd ./docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0
cp -p /home/aaaa/LINUX.X64_193000_db_home.zip .

aaaaは各自の環境に合わせて修正。

5. コンテナをビルド

cd ..
./buildDockerImage.sh -v 19.3.0 -e -i

引数の詳細は公式のReadmeを参照。

Build completed in xxxx seconds.の表示が出たらビルド完了。

6. 永続化用のディレクトリ用意

mkdir /opt/oradata
chmod 777 /opt/oradata
chown 54321:54321 /opt/oradata

/opt/oradataは各自の環境に合わせて修正。
フルアクセスの権限をつけておく。
所有者はrootでもいけるかもしれないが、念のため54321にセットしておく。
※Docker側の所有者?よくわからん。。。

マウントポイントなので、ディレクトリ配下は空にしておく。

7. Docker runの実行

コマンド実行前にDockerが起動していることを確認。

systemctl status docker

Active: inactive (dead)となっていたらDockerが起動していないので、
以下コマンドを実行してDockerを起動。

systemctl start docker

Dockerが起動したら、docker runを実行してコンテナを作成。

docker run --name Oracle19c -p 1521:1521 -p 5500:5500 -e ORACLE_SID=ODB -e ORACLE_PDB=ODB1 -e ORACLE_PWD=oracle -e ORACLE_CHARACTERSET=AL32UTF8 -v /opt/oradata:/opt/oracle/oradata oracle/database:19.3.0-ee
パラメータ 意味 設定値
--name コンテナ名 (例) Oracle19c
-p ポートマッピング
1つ目はOracle Listener
2つ目はOEM Express
1521:1521
5500:5500
-e ORACLE_SID SID (例)ODB
-e ORACLE_PDB PDB (例)ODB1
-e ORACLE_PWD システムユーザのパスワード (例)oracle
-v コンテナ側のデータ領域のマウント先
「:」より前がホスト側のマウントポイント
(例)/opt/oradata
初回は起動するまで時間がかかった。私の環境だと30分程度。
慌てず待機してDATABASE IS READY TO USE!のメッセージが出たら起動完了。

コマンドは実行したままになっているので、別のウィンドウで作業継続。

8. 接続確認

docker exec -it Oracle19c sqlplus system/oracle@localhost:1521/ODB1

SQL*Plusで接続確認して、無事接続できればOK。

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 17 05:28:46 2020
Version 19.3.0.0.0

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

Last Successful login time: Thu Apr 16 2020 15:58:14 +00:00

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

SQL> 

9. ユーザー作成

接続先がPDBであることを確認。

SQL> show con_name

CON_NAME
------------------------------
ODB1
SQL>

CreateUser文を実行。
create user testusr
  identified by testpw
  default tablespace USERS
  temporary tablespace TEMP
  quota unlimited on USERS
/

ユーザができていることを確認。
SQL> select username from dba_users where username = 'TESTUSR';

USERNAME
------------------------------------------------------------
TESTUSR

SQL>

作成したユーザーで接続できることを確認。
docker exec -it Oracle19c sqlplus testusr/testpw@localhost:1521/ODB1

10. イメージの保存

何かあったときに復旧できるように、作成したイメージを保存しておく。

  • Dockerイメージの一覧表示(起動中のもの)
docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                    PORTS                                            NAMES
f3419fa5e694        oracle/database:19.3.0-ee   "/bin/sh -c 'exec $O…"   15 hours ago        Up 15 minutes (healthy)   0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp   Oracle19c

  • Dockerイメージの保存
■イメージのcommit
docker commit f3419fa5e694 oracle19c:ver1

■イメージの保存
docker save oracle19c:ver1 > oracle19c.tar

  • Dockerイメージの読み込み(参考)
docker load < ./oracle19c.tar

参考サイト

今回構築する際に参考にしたサイトです。
ありがとうございました!

5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?