前書き
最近OracleDBAのSilver取得しようと思いまして、参考書読んだりしていますが。
どうにも手を動かさないと頭に入ってきません。
ということで、ローカルにOracleDBを構築しようと思います。
ひとまずSQLやコマンドが叩ければよいので、そこまでをゴールにします。
環境
- Windows 11 Pro
- WSL 2.1.4.0
- Ubuntu 22.04.3 LTS
手順
1. Oracle DBダウンロード
以下のURLから取得できる。今回は「Oracle Database 21c for Linux x86-64」を選択。
https://www.oracle.com/jp/database/technologies/oracle-database-software-downloads.html
2. docker image作成の準備
以下のURLのリポジトリをclone
https://github.com/oracle/docker-images
3. Oracle DBをリポジトリ内に配置
以下のように、バージョン配下にダウンロードしてきたzipファイルを配置する。
docker-images/OracleDatabase/SingleInstance/dockerfiles/21.3.0/LINUX.X64_213000_db_home.zip
4. docker image 作成シェル実行
$ sudo ./docker-images/OracleDatabase/SingleInstance/dockerfiles/buildContainerImage.sh -v 21.3.0 -e -i
※コマンドのオプションなど、以下のREADME参照。
https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance#building-oracle-database-container-images
5. docker image 確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 21.3.0-ee 3dcd229551c2 7 days ago 7.94GB
6. docker-compose.yml作成
version: '3'
services:
do:
image: oracle/database:21.3.0-ee
container_name: my-oracle
ports:
- 1521:1521
- 5500:5500
volumes:
- ./oradata:/opt/oracle/oradata
environment:
- ORACLE_PWD=opensesami
- ORACLE_PDB=ORCLPDB1
7. マウントするディレクトリ作成
$ mkdir oradata
$ chmod 777 ./oradata
8. コンテナ起動とアクセス
$ docker-compose up -d
Recreating my-oracle ... done
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55a94bda9bfa oracle/database:21.3.0-ee "/bin/sh -c 'exec $O…" 7 seconds ago Up 5 seconds (health: starting) 0.0.0.0:1521->1521/tcp, :::1521->1521/tcp, 0.0.0.0:5500->5500/tcp, :::5500->5500/tcp my-oracle
$ docker exec -it my-oracle /bin/bash
9. Oracle動作確認
コンテナ内からsqlplusでDBアクセス。適当なSQLでSQL実行できることを確認。
$ sqlplus system/opensesami@ORCLCDB
SQL*Plus: Release 21.0.0.0.0 - Production on Sun Mar 17 06:21:10 2024
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Last Successful login time: Sun Mar 17 2024 06:16:30 +00:00
Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL> select name, open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
ORCLCDB READ WRITE
参照
下記の記事、参考にさせて頂きました