データベースの作成


本稿では、Dockerを使用してOracleデータベースExpress Editionを実行する方法を示します.

要件


git
Docker
Oracle binaries (オプション)

なぜOracleに専用投稿?


DockerHubではPostgreSQLやMariADBなどの一般的なデータベースのほとんどの画像を見つけることができます.しかし、それがオラクルに来るとき、すべての良いものは終わります.

著作権の理由のために、Oracleは、引かれることができて、Dockerインスタンスで動くイメージを提供しません.
しかし、奇妙にも、彼らは別の解決策を提供しました.

データベースの実行


Oracleは、Oracleデータベースを含む製品提供の多くをセットアップするのを助けるDocker構築スクリプトのスイートを利用できました.これらのスクリプトはGitHub repository .

事前にダウンロードされたバイナリを必要としない唯一のバージョンであるので、バージョン18.4.0 - xeを展開します.他のバージョンについては、後述する必要なバイナリをダウンロードする必要があります.
注意:全てのステップ(オプション)はバージョン18.4.0 - xeでスキップできますが、他のバージョンでも必要です.

(オプション) Oracleバイナリをダウンロードする


移動するOracle Download page . 必要なDBバージョンをダウンロードしてくださいoracle-database-xe-18c-1.0-1.x86_64.rpm

クローンオラクル


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

(オプション)データベースフォルダをプロジェクトフォルダにコピーする


$ cp /path/to/file/oracle-database-xe-18c-1.0-1.x86_64.rpm /path/to/project/docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0

インストーラを実行します。オプションの説明については、コマンドヘルパー


$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles
$ ./buildContainerImage.sh -v 18.4.0 -x
警告:スクリプトを終了する前に最大30分かかることができます

画像チェック


Docker画像を表示します
$ docker images
としてタグ付けされたイメージのチェックoracle/database 18.4.0-xe画像のサイズに注意してください.インストールは完全に完了しませんが、スクリプトは問題を報告することなく終了します.イメージは、およそ

コンテナを実行する


$ docker run --name oracle \
    -d \
    -p 51521:1521 \
    -p 55500:5500 \
    -e ORACLE_PWD=mysecurepassword \
    -e ORACLE_CHARACTERSET=AL32UTF8 \
    oracle/database:18.4.0-xe
どこ
  • --name : コンテナ名
  • -d : 分離モードでコンテナを起動します
  • -p 51521:1521 and -p 55500:5500 コンテナポートにホストをマップします.
  • -e ORACLE_PWD=mysecurepassword and -e ORACLE_CHARACTERSET=AL32UTF8 環境変数を設定します.こちらです.ORACLE_PWD 管理パスワードを設定し、ORACLE_CHARACTERSET データベースの文字セットを設定します.
  • を介してコンテナのステータスをチェックすることができますdocker run コマンドを探すSTATUS フィールド
    $ d ps
    CONTAINER ID   IMAGE                       COMMAND                  CREATED              STATUS                                 PORTS                                                                                      NAMES
    f7776a6dd664   oracle/database:18.4.0-xe   "/bin/sh -c 'exec $O…"   About a minute ago   Up About a minute (health: starting)   0.0.0.0:51521->1521/tcp, :::51521->1521/tcp, 0.0.0.0:55500->5500/tcp, :::55500->5500/tcp   oracle
    
    この例では、コンテナはまだ起動していますhealth: starting ). いったんコンテナが起動すると、ステータスはhealty .
    コンテナの状態を確認する別の方法は、コンテナログを探しています.
    $ docker logs oracle
    ## Omitted for brevity
    *******************
    Prepare for db operation
    7% complete
    Copying database files
    29% complete
    Creating and starting Oracle instance
    30% complete
    31% complete
    34% complete
    38% complete
    41% complete
    43% complete
    Completing Database Creation
    47% complete
    50% complete
    Creating Pluggable Databases
    54% complete
    71% complete
    Executing Post Configuration Actions
    93% complete
    Running Custom Scripts
    100% complete
    Database creation complete. For details check the logfiles at:
     /opt/oracle/cfgtoollogs/dbca/XE.
    Database Information:
    Global Database Name:XE
    System Identifier(SID):XE
    Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details.
    
    Connect to Oracle Database using one of the connect strings:
         Pluggable database: 2540b6bf28f7/XEPDB1
         Multitenant container database: 2540b6bf28f7
    Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE
    The Oracle base remains unchanged with value /opt/oracle
    #########################
    DATABASE IS READY TO USE!
    #########################
    
    
    コンテナを起動するたびに、データベースインスタンスをインストールする必要がありますので、コンテナは準備ができてから数分かかります.

    データベースへの接続


    任意のクライアントを使用してデータベースを接続することができます.私が使った例ではdbeaver :

    あるいは、コンテナ内のbashセッションを作成しますoracle :
    $ docker exec -it --user=oracle oracle bash
    
    Oracleデータベースに必要なLinux環境変数を設定します.
    bash-4.2# . oraenv
    ORACLE_SID = [XE] ? 
    The Oracle base remains unchanged with value /opt/oracle
    
    次に、任意のOracleデータベースシステムにアクセスするSQL *プラス:
    bash-4.2# sqlplus sys@XEPDB1 as sysdba
    
    SQL*Plus: Release 18.0.0.0.0 - Production on Mon Aug 23 19:49:33 2021
    Version 18.4.0.0.0
    
    Copyright (c) 1982, 2018, Oracle.  All rights reserved.
    
    Enter password: 
    
    Connected to:
    Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
    Version 18.4.0.0.0
    
    SQL> 
    
    

    今度来る


    現在、データベースは動作していますが、コンテナの実行には多くの時間が必要です.次の記事では、別のメソッドを使用して起動時間を改善する方法を示します.

    ソース


    https://github.com/oracle/docker-images
    https://blogs.oracle.com/oraclemagazine/deliver-oracle-database-18c-express-edition-in-containers