OracleDB検証|ローカルPCにOracleDB検証環境を導入
はじめに
こんにちは。株式会社SHIFTでインフラエンジニアをしているn.hikです。
現在、機器リプレースに伴う新環境への移行案件に携わっていますが、その中でOracleDBデータの移行作業があります。
まずはOracleDBの操作感に慣れること、そしてデータ移行コマンドを検証するため、OracleDBを検証できる環境をローカルPCを使って導入することにしました。
本記事は、ローカルPCにOracleDB検証環境を導入した際の手順を書いています。簡単に作って消せる環境で触ってみたい、OracleDBの勉強用に環境が欲しい、という方の参考になれば幸いです。
今回の環境は、ローカルPC(Windows 10)のWSL2(Windows Subsystem for Linux)にDocker、Docker Composeを導入し、OracleDBコンテナを作成しています。
|環境情報
※2022年6月時点
Windows 10 Pro (20H2)
WSL2 Ubuntu 20.04
Docker Engine ver.20.10.14
docker-compose ver.1.25.0
Oracle DB 18.4.0-xe (Express Edition)
|WSL2とDockerのインストール
まずは、WSL2とDockerをインストールします。
手順は以下の記事のDockerのインストールまでを参照ください。
Windows PCで簡易Kubernetes環境(minikube)を構築する道のり
|Docker Composeのインストール
次に、Docker Composeをインストールします。
公式ドキュメントがありますのでこちらを参考にインストールします。
Ubuntu 20.04へのDocker Composeのインストールおよび使用方法
|OracleDBリポジトリのダウンロード
次に、OracleDBコンテナを作成するためのリポジトリを git から clone しますが、先に作業ディレクトリを作成し、そこにリポジトリを配置します。
$ mkdir /home/username/oracle-training
$ cd /home/username/oracle-training
リポジトリを clone します。
$ sudo git clone https://github.com/oracle/docker-images.git
|OracleDBのビルド
次に、ダウンロードしてきたリポジトリを使用して、Dockerイメージをビルドします。ダウンロードしたものの中にビルド用のスクリプトがありますので、これを実行します。
今回は評価版のOracleDBを使用します。なお評価版の場合、バージョンは 21.3.0 か 18.4.0 が提供されていますので、どちらかを指定してください。
$ cd /home/username/oracle-training/docker-images/OracleDatabase/SingleInstance/dockerfiles/
$ sudo ./buildContainerImage.sh -v 21.3.0 -x -i
もしくは
$ sudo ./buildContainerImage.sh -v 18.4.0 -x -i
ビルド完了後、イメージを確認してみます。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 18.4.0-xe b0d80cf98f32 About a minute ago 5.89GB
oraclelinux 7-slim 41388a53234b 5 days ago 133MB
|Docker Composeの設定
次に、OracleDBコンテナ用の設定ファイルと、共有ディレクトリを準備します。
./oracle-training/docker-compose.yml を作成し、以下を入力します。
---
version: '3'
services:
db1:
image: oracle/database:18.4.0-xe
container_name: oracle18c
volumes:
- ./oradata:/opt/oracle/oradata
environment:
- ORACLE_PWD=passw0rd
volumes:
これはWSL2上のディレクトリ./oradataを、OracleDBコンテナ上のディレクトリ/opt/oracle/oradataにマウントさせる設定になります。
environment:
これは環境変数を定義しています。上記ではパスワードを指定していますので、任意の値に変更してください。なおPDB名を指定しない場合、デフォルトで XEPDB1 がセットされます。変更したい場合は
- ORACLE_PDB=<任意のPDB名>
を追記してください。
続いて作業ディレクトリを作成します。chmodによって、OracleDBコンテナから共有ディレクトリを参照できるように権限を付与します。
$ mkdir ./oracle-training/oradata
$ sudo chmod 777 ./oracle-training/oradata
|OracleDBコンテナの実行
設定が完了したので、コンテナを実行します。
docker-compose.ymlが配置されている階層でコマンドを実行します。
$ sudo docker-compose up -d
作成状況を確認するには以下のコマンドを実行します。
$ sudo docker-compose logs
以下のメッセージが出ていれば完了となります。
oracle18c | #########################
oracle18c | DATABASE IS READY TO USE!
oracle18c | #########################
では、OracleDBコンテナに接続してみましょう。
$ sudo docker exec -it oracle18c sh
これでOSに接続できたと思います。
OSからDBに接続してみます。PDB名を変更している場合はXEPDB1を読み替えてください。
$ sqlplus sys/passw0rd@XEPDB1 as sysdba
SQLに接続できたと思います。
なお、WSL2から直接SQLに接続したい場合は以下のコマンドを実行します。
docker exec -it oracle18c sqlplus sys/passw0rd@XEPDB1 as sysdba
その他、よく使うであろう docker-compose コマンドを以下に記載します。
# コンテナの状態確認
$ docker-compose ps -a
# コンテナの起動
$ docker-compose start
# コンテナ停止
$ docker-compose stop
# コンテナ削除
$ docker-compose rm
以上でOracleDBコンテナの作成が完了です。あとはDBの検証あるのみです。
dockerを使えば簡単に環境が作れて便利ですね。皆様の参考になれば幸いです。
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/