0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rhel8上のdockerにOracle21c XEを入れてみました。

Last updated at Posted at 2023-01-01

はじめに

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 Listr.
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 DataE.
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 passwd:
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 Pasd:
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のコードの記載をコマンド実行結果から、ファイル名に返納しました。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?