Docker環境にOracle Freeインストール
Ubuntu + DockerにOracle Freeをインストール
gitのクローンを作成する。
git clone https://github.com/oracle/docker-images.git
Cloning into 'docker-images'...
remote: Enumerating objects: 17849, done.
remote: Counting objects: 100% (2382/2382), done.
remote: Compressing objects: 100% (630/630), done.
remote: Total 17849 (delta 1927), reused 1996 (delta 1733), pack-reused 15467
Receiving objects: 100% (17849/17849), 15.26 MiB | 14.07 MiB/s, done.
Resolving deltas: 100% (10486/10486), done.
インストールプログラムの確認
cd docker-images/OracleDatabase/SingleInstance/dockerfiles/
ls
11.2.0.2/ 12.1.0.2/ 12.2.0.1/ 18.3.0/ 18.4.0/ 19.3.0/ 21.3.0/ 23.4.0/
今回は Oracle 23.4 Freeを選択
./buildContainerImage.sh -v 23.4.0 -f
Checking Docker version.
Containerfile.free
Ignored MD5 checksum.
Complete!
・・・・・・・
Oracle Database container image for 'free' version 23.4.0 is ready to be extended:
--> oracle/database:23.4.0-free
Build completed in 933 seconds.
コンテナを起動する。
インストールが終了したら、コンテナを起動する。ここでは、コンテナ名はoracle-dbとした。
docker run -d --name oracle-db - -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=パスワード oracle/database:23.4.0-free
起動を確認する。マシンが非力でメモリーが少ないと時間がかかる。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a6fcab055d8e oracle/database:23.4.0-free "/bin/bash -c $ORACL…" About a minute ago Up About a minute (health: starting) 1521/tcp oracle-db
初期設定
コンテナに接続して、初期設定を行う。
docker exec -it oracle-db bash
Oracle 23.4 Freeでは最初からFREEPDB1なるPDB(プラガブル・データベース)が用意されています。今季は、単なる開発環境であるので、シングルテナントでユルユルの構成です。
bash-4.4$ sqlplus / as sysdba
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
SQL>
FREEPDB1に接奥します。
sqlplus system/password@//localhost:1521/FREEPDB1
接続PDBを確認する。
SQL> show con_name
CON_NAME
------------------------------
FREEPDB1
PDB上にユーザーを作成する。テーブルスペースは任意です。作成するか既存の物を使用するかして下さい。
SQL> create user ユーザー名 identified by パスワード default tablespace users temporary tablespace temp;
User created.
作成ユーザーの県下を確認する。
SQL> select * from user_sys_privs;
USERNAME
--------------------------------------------------------------------------------
PRIVILEGE ADM COM INH
---------------------------------------- --- --- ---
SYSTEM
DEQUEUE ANY QUEUE YES YES YES
SYSTEM
ENQUEUE ANY QUEUE YES YES YES
SYSTEM
MANAGE ANY QUEUE YES YES YES
USERNAME
--------------------------------------------------------------------------------
PRIVILEGE ADM COM INH
---------------------------------------- --- --- ---
SYSTEM
GLOBAL QUERY REWRITE NO YES YES
SYSTEM
CREATE MATERIALIZED VIEW NO YES YES
SYSTEM
SELECT ANY TABLE NO YES YES
USERNAME
--------------------------------------------------------------------------------
PRIVILEGE ADM COM INH
---------------------------------------- --- --- ---
SYSTEM
CREATE TABLE NO YES YES
SYSTEM
UNLIMITED TABLESPACE NO YES YES
8 rows selected.
今回は、開発環境なので、全権限を付与します。開発環境とはいえ、このレベルでセキュリティ等を制御しているのであれば、当然設定を考慮して付与すべきです。
SQL> GRANT ALL PRIVILEGES TO ユーザー名;
Grant succeeded.
後は、SQL*Plusをログオフして、再度ログオンするか、SQL DevelopperなりDBeaverなりで接続して、必要オブジェクトを作成することとなります。
SQL Developperだと、
認証タイプ | デフォルト |
接続タイプ | 基本 |
ホスト名 | Docker実行ホスト名 or IPアドレス |
ポート | 1521 |
サービス名 | FREEPDB1 |
コンテナの停止
docker stop oracle-db
コンテナの削除
docker rm oracld-db