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