
本記事の目的
先日、Oracle Database 19c がLinuxプラットフォーム向けにリリースされた記事を書きましたが、早くもOracle 社公式の Docker Imageが提供されましたので、検証環境にて構築手順(インストールから接続確認まで)を確認してみました。
・Oracle Database 19c available on GitHub
Docker Imageを利用した環境構築手順については、上記ブログおよびDocker Imageのreadmeなどに記載されているのですが、実際に試していくつかハマッタところもあったので、備忘録を兼ねて簡単に紹介してみます。
なお、12c版ではありますが、構築手順を解説しているブログ記事(by chiroitoさん)がありましたので、あわせて参照いただくと理解しやすいと思います。
公式 Oracle Database の Docker イメージを構築
ちなみに、検証環境にはOracle CloudのComputeインスタンスを利用しました。
# こういう時、クラウド環境って簡単に利用できて便利ですねー。
# もちろんOracle Cloudにもトライアル環境が用意されてます(宣伝)
っと、前置きが長くなりましたが、そろそろ本題どうぞ!
検証内容
Oracle Database19c環境を構築するまでの手順は次の通りです。
- Oracle Cloud上でコンピュートインスタンスを準備
- Oracle/docker-images の準備
- Oracle Database 19cインストールバイナリの準備
- Docker Imageを利用した19c環境構築
- Oracle DB接続確認
前述のブログ記事などで詳しい解説があるので、こちらではポイントを中心に書いてきます。
Oracle Cloud上でコンピュートインスタンスを準備
今回の検証環境は、Oracle Cloudの標準プラットフォームとして提供されている「Oracle Linux 7.6」のイメージを利用して準備しました。
インストール要件を満たしていれば良いはずですが、ブートボリュームは少なくとも100GB程度を用意しておくのをお奨めします。
※デフォルト・ブート・ボリューム・サイズ: 46.6 GBとなっているので要注意。
そのままだと領域不足で失敗します(経験者が言うから間違いなしw)。
Oracle Cloudでのコンピュートインスタンス(仮想マシン)の作成手順は、以下のチュートリアル(1)-(3)あたりが参考になります。
チュートリアル : Oracle Cloud Infrastructure を使ってみよう
Oracle/docker-images の準備
「Oracle Linux 7.6」のイメージには、gitがプリインストールされていなかったので、以下の手順でインストール。
[root@comp-reiwa01 ~]# yum install git (中略) Installed: git.x86_64 0:1.8.3.1-20.el7 Dependency Installed: perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-20.el7 perl-TermReadKey.x86_64 0:2.30-20.el7 Complete!
・docker image入手
[opc@comp-reiwa01 ~]$ pwd /home/opc [opc@comp-reiwa01 ~]$ git clone https://github.com/marcelo-ochoa/docker-images.git Cloning into 'docker-images'... remote: Enumerating objects: 10283, done. remote: Total 10283 (delta 0), reused 0 (delta 0), pack-reused 10283 Receiving objects: 100% (10283/10283), 8.94 MiB | 3.14 MiB/s, done. Resolving deltas: 100% (6009/6009), done. [opc@comp-reiwa01 ~]$ ls docker-images
Oracle Database 19cインストールバイナリの準備
Oracle Databaseのインストールバイナリは、OTNのOracle Database ソフトウェア・ダウンロードのページよりダウンロードできます。
今回は19c版(LINUX.X64_193000_db_home.zip)を選択してダウンロード。
ダウンロードには「OTN開発者ラインセンス」の同意が必要です。
OTN開発者ライセンス何それ?という方には、こちらのFAQなどが参考になると思います。
ダウンロードした ファイルは zip 形式のまま、先ほど準備したdocker-imagesの以下のディレクトリへ格納してください。
[opc@comp-reiwa01 ~]$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0 [opc@comp-reiwa01 dockerfiles]$ ls -l 19.3.0 total 2988072 -rwxrwxr-x. 1 opc opc 1050 May 3 14:12 checkDBStatus.sh -rwxrwxr-x. 1 opc opc 905 May 3 14:12 checkSpace.sh -rw-rw-r--. 1 opc opc 63 May 3 14:12 Checksum.ee -rw-rw-r--. 1 opc opc 63 May 3 14:12 Checksum.se2 -rwxrwxr-x. 1 opc opc 3088 May 3 14:12 createDB.sh -rw-rw-r--. 1 opc opc 9204 May 3 14:12 dbca.rsp.tmpl -rw-rw-r--. 1 opc opc 6878 May 3 14:12 db_inst.rsp -rw-rw-r--. 1 opc opc 3357 May 3 14:12 Dockerfile -rw-rw-r--. 1 opc opc 1764 May 3 14:12 Dockerfile.nfs -rwxrwxr-x. 1 opc opc 2526 May 3 14:12 installDBBinaries.sh -rw-rw-r--. 1 opc opc 3059705302 May 3 02:02 LINUX.X64_193000_db_home.zip★ここに配置 -rwxrwxr-x. 1 opc opc 6526 May 3 14:12 runOracle.sh -rwxrwxr-x. 1 opc opc 1015 May 3 14:12 runUserScripts.sh -rwxrwxr-x. 1 opc opc 758 May 3 14:12 setPassword.sh -rwxrwxr-x. 1 opc opc 932 May 3 14:12 setupLinuxEnv.sh -rwxrwxr-x. 1 opc opc 678 May 3 14:12 startDB.sh
Docker Imageを利用した19c環境構築
・docker インストール
あとは、Docker Imageを利用して19cがインストールされたコンテナを実行すればよいだけ。
なのですが、またしても「Oracle Linux 7.6」のイメージには、dockerがプリインストールされていなかったので、以下の手順でインストール。
[root@comp-reiwa01 ~]# yum update (結果省略) [root@comp-reiwa01 ~]# yum install docker-engine (中略) Installed: docker-engine.x86_64 0:18.09.1.ol-1.0.5.el7 Dependency Installed: container-selinux.noarch 2:2.77-5.el7 containerd.x86_64 0:1.2.0-1.0.5.el7 criu.x86_64 0:3.9-5.el7 libnet.x86_64 0:1.1.6-7.el7 protobuf-c.x86_64 0:1.0.2-3.el7 runc.x86_64 0:1.0.0-19.rc5.git4bb1fe4.0.3.el7 Complete!
・docker起動
[root@comp-reiwa01 ~]# systemctl start docker [root@comp-reiwa01 ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/docker.service.d └─docker-sysconfig.conf Active: active (running) since Fri 2019-05-03 15:01:39 GMT; 8s ago Docs: https://docs.docker.com Main PID: 14008 (dockerd) Tasks: 10 Memory: 34.2M CGroup: /system.slice/docker.service └─14008 /usr/bin/dockerd --selinux-enabled May 03 15:01:37 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:37.30362...c May 03 15:01:37 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:37.40923..." May 03 15:01:37 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:37.41059..." May 03 15:01:37 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:37.88891..." May 03 15:01:38 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:38.21264..." May 03 15:01:39 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:39.68258...2 May 03 15:01:39 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:39.68293...l May 03 15:01:39 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:39.68317..." May 03 15:01:39 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:39.70830..." May 03 15:01:39 comp-reiwa01 systemd[1]: Started Docker Application Containe.... Hint: Some lines were ellipsized, use -l to show in full.
・opcユーザにdocker操作権限を付与(オプション)
opcユーザでdockerを操作する場合は、以下の手順でdockerグループへ登録
[root@comp-reiwa01 ~]# groupadd docker groupadd: group 'docker' already exists [root@comp-reiwa01 ~]# usermod -g docker opc [root@comp-reiwa01 ~]# systemctl restart docker.service
・19c用のコンテナを起動
docker imageのreadmeにある実行例を参考に、以下のコマンドにて19c用のコンテナを起動します。
[root@comp-reiwa01 ~]# docker run --name 19c -p 1521:1521 -p 5500:5500 oracle/database:19.3.0-ee ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: o+8ogFbJjOI=1★sysのパスワード LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 04-MAY-2019 12:38:41 Copyright (c) 1991, 2019, Oracle. All rights reserved. Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 19.0.0.0.0 - Production System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Log messages written to /opt/oracle/diag/tnslsnr/0658dee10f61/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 04-MAY-2019 12:38:41 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/0658dee10f61/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))) The listener supports no services The command completed successfully Prepare for db operation 8% complete Copying database files 31% complete Creating and starting Oracle instance 32% complete 36% complete 40% complete 43% complete 46% complete Completing Database Creation 51% complete 54% complete Creating Pluggable Databases 58% complete 77% complete Executing Post Configuration Actions 100% complete Database creation complete. For details check the logfiles at: /opt/oracle/cfgtoollogs/dbca/ORCLCDB. Database Information: Global Database Name:ORCLCDB System Identifier(SID):ORCLCDB Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details. SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 4 12:54:54 2019 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SQL> System altered. SQL> System altered. SQL> Pluggable database altered. SQL> PL/SQL procedure successfully completed. SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 The Oracle base remains unchanged with value /opt/oracle ######################### DATABASE IS READY TO USE! ######################### The following output is now a tail of the alert.log: (結果省略)
この後もXDBインストールやらデータファイルの拡張処理が実行されますが、上記「DATABASE IS READY TO USE!」が出力されれば、とりあえずOK。
既に、Oracle Database 19cがDocker コンテナ上で動作しているはず。
Oracle DB接続確認
(docker runが続行中の場合は)別端末よりOracle DBへ接続してみます。
・dockerコンテナ名確認
[opc@comp-reiwa01 ~]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0658dee10f61 oracle/database:19.3.0-ee "/bin/sh -c 'exec $O…" 42 minutes ago Up 42 minutes (healthy) 0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp 19c
⇒上記の場合は「0658dee10f61 」がコンテナ名と確認できる。
・sqlplusログイン確認
上記で確認したコンテナ名とsysのパスワード(docker run実行直後に表示されているはず)を指定して、以下のような形式でsqlplusを実行。
[opc@comp-reiwa01 ~]$ docker exec -ti 0658dee10f61 sqlplus sys/o+8ogFbJjOI=1@//localhost:1521/ORCLCDB as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 4 13:22:43 2019 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0
⇒ログイン成功!
・簡易確認
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 READ WRITE NO SQL> alter session set container=ORCLPDB1; Session altered. SQL> select sysdate from dual; SYSDATE --------- 04-MAY-19
⇒PDBにも接続成功!
GW中に無事、Oracle Database 19c環境をゲットできました。
おまけ:解決したエラー編
上に書いた手順を参考にすれば、サクッと環境を構築できると思いますが、いくつか想定外エラーに遭遇しました。
おまけとして以下の記事にまとめましたので、興味ある方は合わせて参照ください。
・[Oracle DB] 公式Docker Imageを利用してOracle Database 19c環境を構築してみた(解決したエラー編)
おまけ:RAC構築編
続編として、RAC環境を構築してみた記事も書いたので、あわせてどうぞ。
[Oracle Database] 公式Docker Imageを利用してOracle Database 19cのRAC環境を構築してみた
参考情報
※既に紹介したものも含みます。
・Oracle Database 19c available on GitHub
・Oracle Database on Docker Readme
・Building Oracle 19c Docker image
・公式 Oracle Database の Docker イメージを構築
・Oracle Container Registry
⇒オラクルが管理しているDockerコンテナレジストリ
入門者にお奨めと評判のDocker本↓
Leave a Reply