はじめに
dockerにOracle21c XEを導入して動作確認をやってみました。
目次
1.前提条件
2.追加ソフトウェア
3.Oracle21c XEのコンテナイメージの作成
4.Oracle21c XEのコンテナの起動
5.Oracle Instant Clientコンテナイメージの作成
6.Oracle Instant Clientコンテナを起動して接続確認
7.参考
8.改訂履歴
1.前提条件
- ここでまとめた情報は、AWS上のRHEL8.6 20220503のamiをベースにしています。
- SELINUXは無効化してあります。
- 使用リージョンはap-northeast-1です。
- 使用するユーザは、ec2-userとします。
- dockerは、20.10.18を導入済みです。
- 使用したインスタンスは、t3.largeです。
- Oracle21c XEコンテナ作成後に、Oracle Instant Clientコンテナを作成して、接続確認を行います。
- Oracle21c XEコンテナが稼働するOSは、Oracle Linux7を使用しています。(構築スクリプトで指定しているため)
- Oracle Instant Clientコンテナが稼働するOSは、Oracle Linux8を使用しています。
2.追加パッケージ・ソフトウェア
2-1 OS標準の追加パッケージは、以下の通りです。
- langpack-ja
- git
3.Oracle21c XEのコンテナイメージの作成
3-1 githubからコンテナ作成用スクリプトをDLします。
$ git clone https://github.com/oracle/docker-images.git
Cloning into 'docker-images'...
remote: Enumerating objects: 16343, done.
remote: Counting objects: 100% (258/258), done.
remote: Compressing objects: 100% (197/197), done.
remote: Total 16343 (delta 95), reused 154 (delta 51), pack-reused 16085
Receiving objects: 100% (16343/16343), 10.57 MiB | 21.36 MiB/s, done.
Resolving deltas: 100% (9606/9606), done.
$ ls -la docker-images
合計 40
drwxrwxr-x 35 ec2-user ec2-user 4096 1月 1 18:58 .
drwxrwxr-x 4 ec2-user ec2-user 59 1月 1 18:58 ..
drwxrwxr-x 8 ec2-user ec2-user 163 1月 1 18:58 .git
-rw-rw-r-- 1 ec2-user ec2-user 44 1月 1 18:58 .gitattributes
drwxrwxr-x 4 ec2-user ec2-user 122 1月 1 18:58 .github
-rw-rw-r-- 1 ec2-user ec2-user 74 1月 1 18:58 .gitignore
-rw-rw-r-- 1 ec2-user ec2-user 0 1月 1 18:58 .gitmodules
drwxrwxr-x 6 ec2-user ec2-user 110 1月 1 18:58 Archive
-rw-rw-r-- 1 ec2-user ec2-user 1319 1月 1 18:58 CODEOWNERS
-rw-rw-r-- 1 ec2-user ec2-user 3359 1月 1 18:58 CODE_OF_CONDUCT.md
-rw-rw-r-- 1 ec2-user ec2-user 10571 1月 1 18:58 CONTRIBUTING.md
drwxrwxr-x 3 ec2-user ec2-user 53 1月 1 18:58 Contrib
drwxrwxr-x 3 ec2-user ec2-user 16 1月 1 18:58 GraalVM
-rw-rw-r-- 1 ec2-user ec2-user 1844 1月 1 18:58 LICENSE.txt
drwxrwxr-x 4 ec2-user ec2-user 68 1月 1 18:58 NoSQL
drwxrwxr-x 4 ec2-user ec2-user 76 1月 1 18:58 OracleAccessManagement
drwxrwxr-x 4 ec2-user ec2-user 57 1月 1 18:58 OracleAnalytics
drwxrwxr-x 3 ec2-user ec2-user 59 1月 1 18:58 OracleBI
drwxrwxr-x 4 ec2-user ec2-user 59 1月 1 18:58 OracleCloudInfrastructure
drwxrwxr-x 2 ec2-user ec2-user 23 1月 1 18:58 OracleCoherence
drwxrwxr-x 4 ec2-user ec2-user 56 1月 1 18:58 OracleDatabase
drwxrwxr-x 4 ec2-user ec2-user 57 1月 1 18:58 OracleEssbase
drwxrwxr-x 4 ec2-user ec2-user 57 1月 1 18:58 OracleFMWInfrastructure
drwxrwxr-x 4 ec2-user ec2-user 49 1月 1 18:58 OracleGoldenGate
drwxrwxr-x 4 ec2-user ec2-user 74 1月 1 18:58 OracleHTTPServer
drwxrwxr-x 5 ec2-user ec2-user 91 1月 1 18:58 OracleIdentityGovernance
drwxrwxr-x 4 ec2-user ec2-user 63 1月 1 18:58 OracleInstantClient
drwxrwxr-x 6 ec2-user ec2-user 62 1月 1 18:58 OracleJava
drwxrwxr-x 4 ec2-user ec2-user 63 1月 1 18:58 OracleLinuxDevelopers
drwxrwxr-x 3 ec2-user ec2-user 42 1月 1 18:58 OracleManagementAgent
drwxrwxr-x 3 ec2-user ec2-user 33 1月 1 18:58 OracleOpenJDK
drwxrwxr-x 3 ec2-user ec2-user 77 1月 1 18:58 OracleRestDataServices
drwxrwxr-x 4 ec2-user ec2-user 91 1月 1 18:58 OracleSOASuite
drwxrwxr-x 4 ec2-user ec2-user 47 1月 1 18:58 OracleTuxedo
drwxrwxr-x 5 ec2-user ec2-user 109 1月 1 18:58 OracleUnifiedDirectory
drwxrwxr-x 4 ec2-user ec2-user 94 1月 1 18:58 OracleUnifiedDirectorySM
drwxrwxr-x 3 ec2-user ec2-user 22 1月 1 18:58 OracleVeridata
drwxrwxr-x 3 ec2-user ec2-user 42 1月 1 18:58 OracleWebCenterContent
drwxrwxr-x 3 ec2-user ec2-user 42 1月 1 18:58 OracleWebCenterPortal
drwxrwxr-x 3 ec2-user ec2-user 59 1月 1 18:58 OracleWebCenterSites
drwxrwxr-x 4 ec2-user ec2-user 74 1月 1 18:58 OracleWebLogic
-rw-rw-r-- 1 ec2-user ec2-user 3119 1月 1 18:58 README.md
drwxrwxr-x 2 ec2-user ec2-user 18 1月 1 18:58 scripts
3-2 ディレクトリを移動して、コンテナイメージを作成します。(約10分近くかかります)
$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles/
$ ./buildContainerImage.sh -v 21.3.0 -x
Checking Docker version.
Ignored MD5 checksum.
==========================
Container runtime info:
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.9.1-docker)
scan: Docker Scan (Docker Inc., v0.17.0)
・
・
(中略)
・
・
Changing permissions of /opt/oracle/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /opt/oracle/oraInventory to oinstall.
The execution of the script is complete.
Check /opt/oracle/product/21c/dbhomeXE/install/root_91db98214edc_2023-01-01_05-04-20-544484975.log for the output of root script
Removing intermediate container 91db98214edc
---> 091a110258d8
Step 7/10 : USER oracle
---> Running in 255c9f8ad96d
Removing intermediate container 255c9f8ad96d
---> 68aa7dc8e56a
Step 8/10 : WORKDIR /home/oracle
---> Running in 1e628b183bd5
Removing intermediate container 1e628b183bd5
---> 6e98108009a3
Step 9/10 : HEALTHCHECK --interval=1m --start-period=5m --timeout=30s CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
---> Running in c538fbd548bf
Removing intermediate container c538fbd548bf
---> c38838636251
Step 10/10 : CMD exec $ORACLE_BASE/$RUN_FILE
---> Running in 7fa7073b1881
Removing intermediate container 7fa7073b1881
---> 9b33bf323806
[Warning] One or more build-args [DB_EDITION] were not consumed
Successfully built 9b33bf323806
Successfully tagged oracle/database:21.3.0-xe
Oracle Database container image for 'xe' version 21.3.0 is ready to be extended:
--> oracle/database:21.3.0-xe
Build completed in 543 seconds.
$ dockerf image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 21.3.0-xe 9b33bf323806 18 seconds ago 6.53GB
4.Oracle21c XEのコンテナの起動
4-1 docker内にoracle-networkを作成します。
- Oracle21c XEとOracle Instant Client間で接続確認を行う際、ネットワークが必要になりますので、先にdocker内にoracle-networkを作成します。
$ docker network create oracle-network
08fb0b4e8941666417ae1fe6085d28f7774758266d2681b1a5aa70dae7aeaf14
$ dockerf network ls
NETWORK ID NAME DRIVER SCOPE
08fb0b4e8941 oracle-network bridge local
4-2 事前にデータファイル格納用ディレクトリを作成します。
$ mkdir -p /home/ec2-user/oracle/opt/oracle/oradata
4-3 systemd サービスファイルを作成します。
- 今回、Oracle21c XEを自動起動するようにしたいため、systemd サービスファイルを作成します。
- ExecStartPreでは、oracle21c XEのコンテナが無い場合は、docker runコマンドでコンテナを生成します。
- oradataディレクトリ配下を永続化するため、 /home/ec2-user/oracle/opt/oracle/oradata を作成し、 /opt/oracle/oradata にマウントします。
- ポートはリスナー用に1521、OEM用に5500を用意します。
- 次回以降は、普通にコンテナを起動します。
- 停止の仕方について特に記載がなかったため、oracleに対してshutdown immediateを発行し、その後コンテナを停止するようにします。
oracle-db-ex-21c.service
[Unit]
Description=oracle-db-ex-21c
#Documentation=
Requires=docker.service
After=docker.service
[Service]
Type=simple
TimeoutStartSec=10m
Environment=DOCKER_NAME=oracle-db-ex-21c
Environment=DOCKER_IMAGE_NAME=oracle/database:21.3.0-xe
Environment=ORACLE_PWD=oracle2O23
Environment=TZ=Asia/Tokyo
Environment=PORT_LISTENER_LOCAL=1521
Environment=PORT_LISTENER_EXPOSE=1521
Environment=PORT_OEM_LOCAL=5500
Environment=PORT_OEM_EXPOSE=5500
Environment=NETWORK_NAME=oracle-network
Environment=VOLUME_ORADATA_LOCAL=/home/ec2-user/oracle/opt/oracle/oradata
Environment=VOLUME_ORADATA=/opt/oracle/oradata
ExecStartPre=/bin/bash -c 'if [ $(/usr/bin/docker ps -a | grep ${DOCKER_NAME} | wc -l) -lt 1 ] ; then /usr/bin/docker run --name ${DOCKER_NAME} --env TZ=${TZ} --env ORACLE_PWD=${ORACLE_PWD} -p ${PORT_LISTENER_LOCAL}:${PORT_LISTENER_EXPOSE} -p ${PORT_OEM_LOCAL}:${PORT_OEM_EXPOSE} -d --network ${NETWORK_NAME} -v ${VOLUME_ORADATA_LOCAL}:${VOLUME_ORADATA} ${DOCKER_IMAGE_NAME} ; fi'
ExecStart=/usr/bin/docker start -a ${DOCKER_NAME}
ExecStop=/usr/bin/docker exec -it ${DOCKER_NAME} bash -c "echo 'shutdown immediate;' | sqlplus system/${ORACLE_PWD} as sysdba" && /usr/bin/docker stop ${DOCKER_NAME}
[Install]
WantedBy=multi-user.target
4-4 作成したサービスファイルを、/etc/systemd/system/にコピーして、起動します。
起動後、セットアップに10分ほどかかりますので、しばらく待ちます。
$ sudo cp -p oracle-db-ex-21c.service /etc/systemd/system/
$ sudo systemctl enable oracle-db-ex-21c.service --no-pager
$ sudo systemctl start oracle-db-ex-21c.service --no-pager
$ sudo systemctl status oracle-db-ex-21c.service --no-pager
● oracle-db-ex-21c.service - oracle-db-ex-21c Loaded: loaded (/etc/systemd/system/oracle-db-ex-21c.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2023-01-01 17:42:50 JST; 10s agoProcess: 31036 ExecStartPre=/bin/bash -c if [ $(/usr/bin/docker ps -a | grep ${DOCKER_NAME} | wc -l) -lt 1 ] ; then /usr/bin/dock\
er run --name ${DOCKER_NAME} --env TZ=${TZ} --env ORACLE_PWD=${ORACLE_PWD} -p ${PORT_LISTENER_LOCAL}:${PORT_LISTENER_EXPOSE} -p ${P\
ORT_OEM_LOCAL}:${PORT_OEM_EXPOSE} -p ${PORT_APEX_LOCAL}:${PORT_APEX_EXPOSE} -d --network ${NETWORK_NAME} -v ${VOLUME_ORADATA_LOCAL}\
:${VOLUME_ORADATA} ${DOCKER_IMAGE_NAME} ; fi (code=exited, status=0/SUCCESS)
Main PID: 31203 (docker) Tasks: 6 (limit: 48604) Memory: 12.3MCGroup: /system.slice/oracle-db-ex-21c.servicemq31203 /usr/bin/docker start -a oracle-db-ex-21c
1月 01 17:42:50 rhel8_6-docker docker[31203]: Confirm the password:
1月 01 17:42:50 rhel8_6-docker docker[31203]: Configuring Oracle List…r.
1月 01 17:42:52 rhel8_6-docker docker[31203]: Listener configuration …d.
1月 01 17:42:52 rhel8_6-docker docker[31203]: Configuring Oracle Data…E.
1月 01 17:43:00 rhel8_6-docker docker[31203]: Enter SYS user password:
1月 01 17:43:00 rhel8_6-docker docker[31203]: [18B blob data]
1月 01 17:43:00 rhel8_6-docker docker[31203]: Enter SYSTEM user passw…d:
1月 01 17:43:00 rhel8_6-docker docker[31203]: [14B blob data]
1月 01 17:43:00 rhel8_6-docker docker[31203]: Enter PDBADMIN User Pas…d:
1月 01 17:43:00 rhel8_6-docker docker[31203]: [15B blob data]
Hint: Some lines were ellipsized, use -l to show in full.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
50a126dedf17 oracle/database:21.3.0-xe "/bin/sh -c 'exec $O…" About a minute ago Up About a minute (health: starting) 0.0.0.0:1521->1521/tcp, :::1521->1521/tcp, 0.0.0.0:5500->5500/tcp, :::5500->5500/tcp oracle-db-ex-21c
$ docker logs -f 50a126dedf17
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
Enter SYS user password:
********** *****
Enter SYSTEM user password:
********** *
Enter PDBADMIN User Password:
********** **
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
33% complete
37% complete
40% 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: 50a126dedf17/XEPDB1
Multitenant container database: 50a126dedf17
Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE
SQL*Plus: Release 21.0.0.0.0 - Production on Sun Jan 1 17:50:39 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Connected to:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL>
System altered.
SQL>
System altered.
SQL>
Pluggable database altered.
SQL>
PL/SQL procedure successfully completed.
SQL> SQL>
Session altered.
SQL>
User created.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
User altered.
SQL> SQL> Disconnected from Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL*Plus: Release 21.0.0.0.0 - Production on Sun Jan 1 17:50:39 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Connected to:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL>
PL/SQL procedure successfully completed.
SQL> Disconnected from Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
The Oracle base remains unchanged with value /opt/oracle
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:
XEPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2023-01-01T17:50:38.560539+09:00
ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
Completed: ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
2023-01-01T17:50:39.091226+09:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/XE/control01.ctl' SCOPE=SPFILE;
2023-01-01T17:50:39.113193+09:00
ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
下記が表示されたら、CTRL+Cを入力して、ログ表示を止めます。
Completed: ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
5.Oracle Instant Clientコンテナイメージの作成
5-1 下記のようなDockerfileを作成します。
導入パッケージは下記のとおりです。
- oracle-instantclient-release-el8
Oracle Instant Clientを導入するのに必要になります。導入時には必須のパッケージとなります。 - oracle-instantclient-basic
Oracle Instant Clientの共通設定ファイルになります。導入時には必須のパッケージとなります。 - oracle-instantclient-devel
開発用パッケージとなります。必須ではないので、不要でしたら、削除しても問題ないです。 - oracle-instantclient-tools
impdp/expdp、sqlldr等が導入されるパッケージになります。不要でしたら、削除しても問題ないです。 - oracle-instantclient-sqlplus
SQL*Plusが導入されるパッケージになります。不要でしたら、削除しても問題ないです。
Dockerfile
# Dockerfile
# 環境のベースの指定
FROM oraclelinux:8
# 環境変数の設定
ENV LANG=ja_JP.utf8 TZ=Asia/Tokyo NLS_LANG=Japanese_Japan.UTF8 PATH=$PATH:/usr/lib/oracle/21/client64/bin
# イメージを作成する際、実行したいコマンドなど
RUN set -x ; \
dnf -y install oracle-instantclient-release-el8 && \
dnf -y install oracle-instantclient-basic oracle-instantclient-devel oracle-instantclient-tools oracle-instantclient-sqlplus && \
rm -rf /var/cache/dnf && \
rpm -qa --last && \
sqlplus -v ;
CMD ["sqlplus", "-v"]
# ex.
# $ docker network create oracle-network
# $ docker run -v /my/host/wallet_dir:/usr/lib/oracle/21/client64/lib/network/admin:Z,ro --network=oracle-network . . .
# EOF
5-2 Oracle Instant Clientコンテナイメージを作成します。
docker buildコマンドでコンテナイメージを作成します。
$ docker build . -t oraclelinux8-instantclient-21
Sending build context to Docker daemon 7.168kB
Step 1/5 : FROM oraclelinux:8
---> b0045ea7bbde
Step 2/5 : LABEL maintainer="<foo@example.com>" version="1.0"
---> Running in f40ddf64b1f2
Removing intermediate container f40ddf64b1f2
---> 3228dbaab93b
Step 3/5 : ENV LANG=ja_JP.utf8 TZ=Asia/Tokyo NLS_LANG=Japanese_Japan.UTF8 PATH=$PATH:/usr/lib/oracle/21/client64/bin
---> Running in 3e316cb586fc
Removing intermediate container 3e316cb586fc
---> da6b3d72f9da
Step 4/5 : RUN set -x ; dnf -y install oracle-instantclient-release-el8 && dnf -y install oracle-instantclient-basic oracle-instantclient-devel oracle-instantclient-tools oracle-instantclient-sqlplus && rm -rf /var/cache/dnf && rpm -qa --last && sqlplus -v ;
---> Running in 458939daf5b8
+ dnf -y install oracle-instantclient-release-el8
Oracle Linux 8 BaseOS Latest (x86_64) 104 MB/s | 53 MB 00:00
Oracle Linux 8 Application Stream (x86_64) 109 MB/s | 42 MB 00:00
Last metadata expiration check: 0:00:10 ago on Sun Jan 1 18:28:30 2023.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
oracle-instantclient-release-el8 x86_64 1.0-1.el8 ol8_baseos_latest 16 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 16 k
Installed size: 18 k
Downloading Packages:
oracle-instantclient-release-el8-1.0-1.el8.x86_ 599 kB/s | 16 kB 00:00
--------------------------------------------------------------------------------
Total 547 kB/s | 16 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : oracle-instantclient-release-el8-1.0-1.el8.x86_64 1/1
Running scriptlet: oracle-instantclient-release-el8-1.0-1.el8.x86_64 1/1
Verifying : oracle-instantclient-release-el8-1.0-1.el8.x86_64 1/1
Installed:
oracle-instantclient-release-el8-1.0-1.el8.x86_64
Complete!
Failed to set locale, defaulting to C.UTF-8
+ dnf -y install oracle-instantclient-basic oracle-instantclient-devel oracle-instantclient-tools oracle-instantclient-sqlplus
Oracle Instant Client 21 for Oracle Linux 8 (x8 271 kB/s | 16 kB 00:00
Dependencies resolved.
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
oracle-instantclient-basic x86_64 21.8.0.0.0-1.el8 ol8_oracle_instantclient21 53 M
oracle-instantclient-devel x86_64 21.8.0.0.0-1.el8 ol8_oracle_instantclient21 659 k
oracle-instantclient-sqlplus x86_64 21.8.0.0.0-1.el8 ol8_oracle_instantclient21 711 k
oracle-instantclient-tools x86_64 21.8.0.0.0-1.el8 ol8_oracle_instantclient21 864 k
Installing dependencies:
libaio x86_64 0.3.112-1.el8 ol8_baseos_latest 33 k
Transaction Summary
==========================================================================================
Install 5 Packages
Total download size: 55 M
Installed size: 247 M
Downloading Packages:
(1/5): oracle-instantclient-devel-21.8.0.0.0-1. 10 MB/s | 659 kB 00:00
(2/5): oracle-instantclient-sqlplus-21.8.0.0.0- 9.3 MB/s | 711 kB 00:00
(3/5): libaio-0.3.112-1.el8.x86_64.rpm 4.4 MB/s | 33 kB 00:00
(4/5): oracle-instantclient-tools-21.8.0.0.0-1. 30 MB/s | 864 kB 00:00
(5/5): oracle-instantclient-basic-21.8.0.0.0-1. 84 MB/s | 53 MB 00:00
--------------------------------------------------------------------------------
Total 87 MB/s | 55 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : libaio-0.3.112-1.el8.x86_64 1/5
Installing : oracle-instantclient-basic-21.8.0.0.0-1.el8.x86_64 2/5
Running scriptlet: oracle-instantclient-basic-21.8.0.0.0-1.el8.x86_64 2/5
Installing : oracle-instantclient-devel-21.8.0.0.0-1.el8.x86_64 3/5
Installing : oracle-instantclient-sqlplus-21.8.0.0.0-1.el8.x86_64 4/5
Running scriptlet: oracle-instantclient-sqlplus-21.8.0.0.0-1.el8.x86_64 4/5
Installing : oracle-instantclient-tools-21.8.0.0.0-1.el8.x86_64 5/5
Running scriptlet: oracle-instantclient-tools-21.8.0.0.0-1.el8.x86_64 5/5
Verifying : oracle-instantclient-basic-21.8.0.0.0-1.el8.x86_64 1/5
Verifying : oracle-instantclient-devel-21.8.0.0.0-1.el8.x86_64 2/5
Verifying : oracle-instantclient-sqlplus-21.8.0.0.0-1.el8.x86_64 3/5
Verifying : oracle-instantclient-tools-21.8.0.0.0-1.el8.x86_64 4/5
Verifying : libaio-0.3.112-1.el8.x86_64 5/5
Installed:
libaio-0.3.112-1.el8.x86_64
oracle-instantclient-basic-21.8.0.0.0-1.el8.x86_64
oracle-instantclient-devel-21.8.0.0.0-1.el8.x86_64
oracle-instantclient-sqlplus-21.8.0.0.0-1.el8.x86_64
oracle-instantclient-tools-21.8.0.0.0-1.el8.x86_64
Complete!
Failed to set locale, defaulting to C.UTF-8
+ rm -rf /var/cache/dnf
+ rpm -qa --last
oracle-instantclient-tools-21.8.0.0.0-1.el8.x86_64 Sun Jan 1 18:28:55 2023
oracle-instantclient-sqlplus-21.8.0.0.0-1.el8.x86_64 Sun Jan 1 18:28:55 2023
oracle-instantclient-devel-21.8.0.0.0-1.el8.x86_64 Sun Jan 1 18:28:55 2023
oracle-instantclient-basic-21.8.0.0.0-1.el8.x86_64 Sun Jan 1 18:28:55 2023
libaio-0.3.112-1.el8.x86_64 Sun Jan 1 18:28:48 2023
oracle-instantclient-release-el8-1.0-1.el8.x86_64 Sun Jan 1 18:28:44 2023
・
・
(中略)
・
・
+ sqlplus -v
SQL*Plus: Release 21.0.0.0.0 - Production
Version 21.8.0.0.0
Removing intermediate container 458939daf5b8
---> 04926f1851a0
Step 5/5 : CMD ["sqlplus", "-v"]
---> Running in 27b1a710be48
Removing intermediate container 27b1a710be48
---> c96dcfb33ca0
Successfully built c96dcfb33ca0
Successfully tagged oraclelinux8-instantclient-21:latest
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
oraclelinux8-instantclient-21 latest d03071cfce70 3 hours ago 499MB
oracle/database 21.3.0-xe 9b33bf323806 3 hours ago 6.53GB
oraclelinux 7-slim 19d1d44a7ad1 3 weeks ago 135MB
oraclelinux 8 b0045ea7bbde 3 weeks ago 225MB
6.Oracle Instant Clientコンテナを起動して接続確認
docker runコマンドで、Oracle Instant Clientコンテナを起動します。
引数の意味は、下記の通りです。
- -it
対話型モードで起動します。 - --rm
コンテナ終了時にコンテナを破棄します。 - --network=oracle-network
ネットワークとしてoracle-networkを使用します。 - sqlplus~
sqlplusを起動します。
oracle-db-ex-21cはoracle21c XEのホスト名、1521はポート番号です。(共有しているoracle-networkを使用することにより、ホスト名の名前解決ができます)
確認内容は、接続したデータベースの内容と、テーブル検索(dual表を使用してsysdateを表示)です。
$ docker run -it --rm --network=oracle-network oraclelinux8-instantclient-21 sqlplus system/oracle2O23@oracle-db-ex-21c:1521
SQL*Plus: Release 21.0.0.0.0 - Production on Sun Jan 1 17:56:21 2023
Version 21.8.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Sun Jan 01 2023 17:52:09 +09:00
Connected to:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL> set pagesize 10000
SQL> set linesize 1000
SQL> select * from v$database;
DBID NAME CREATED RESETLOGS_CHANGE# RESETLOGS PRIOR_RESETLOGS_CHANGE# PRIOR_RES LOG_MODE CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROL CONTROLFI CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFI OPEN_RESETL VERSION_T OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL REMOTE_A ACTIVATION# SWITCHOVER# DATABASE_ROLE ARCHIVELOG_CHANGE# ARCHIVEL SWITCHOVER_STATUS DATAGUAR GUARD_S SUPPLEME SUP SUP FORCE_LOGGING PLATFORM_ID PLATFORM_NAME RECOVERY_TARGET_INCARNATION# LAST_OPEN_INCARNATION# CURRENT_SCN FLASHBACK_ON SUP SUP DB_UNIQUE_NAME STANDBY_BECAME_PRIMARY_SCN FS_FAILOVER_MODE FS_FAILOVER_STATUS FS_FAILOVER_CURRENT_TARGET FS_FAILOVER_THRESHOLD FS_FAIL
---------- --------- --------- ----------------- --------- ----------------------- --------- ------------ ------------------ --------------- ------- --------- --------------------- ------------------- --------- ----------- --------- -------------------- -------------------- -------------------- -------- ----------- ----------- ---------------- ------------------ -------- -------------------- -------- ------- -------- --- --- --------------------------------------- ----------- ----------------------------------------------------------------------------------------------------- ---------------------------- ---------------------- ----------- ------------------ --- --- ------------------------------ -------------------------- ------------------- ---------------------- ------------------------------ --------------------- -------
FS_FAILOVER_OBSERVER_HOST CON PRIMARY_DB_UNIQUE_NAME SUP MIN_REQUIRED_CAPTURE_CHANGE# CDB CON_ID
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ------------------------------ --- ---------------------------- --- ----------
PENDING_ROLE_CHANGE_TASKS CON_DBID FOR SUP GOLDENGA
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- --- --- --------
3006112575 XE 01-JAN-23 2571212 01-JAN-23 1 17-AUG-21 NOARCHIVELOG 2621373 2571212 CURRENT 01-JAN-23 1314 2622933 01-JAN-23 NOT ALLOWED 01-JAN-23 READ WRITE MAXIMUM PERFORMANCE UNPROTECTED ENABLED 3006112063 3006112063 PRIMARY 0 DISABLED NOT ALLOWED DISABLED NONE NO NO NO NO 13 Linux x86 64-bit 2 2 2622953 NO NO NO XE 0 DISABLED DISABLED 0
NO NO YES 0
NOT APPLICABLE 3006112575 NO NO DISABLED
SQL> select to_char(sysdate, 'yyyy/mm/dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2023/01/01 17:57:31
7.参考
oracle/docker-images
docker network connect
8.改訂履歴
- 2023年01月02日
・タグの使い方を誤っていたのを修正しました。
・4-3の説明を詳細化しました。
・5-1のコードの記載をコマンド実行結果から、ファイル名に返納しました。