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.

OCIのAmpere(ARM)プロセッサを用いたインスタンス上に、Dockerを用いてOracleClientのコンテナを構築してみた

Last updated at Posted at 2022-05-27

はじめに

OCIでは無料で使えるAlwaysFreeのシェイプとしてAmpere(ARM)ベースのプロセッサが提供されています。
今回はARMベースのシェイプに対してOracleClientをインストールして、sqlplusが使えるになる状態まで環境を構築したいと思います。
併せてArmプロセッサ上にOracleClient環境のDockerコンテナも構築したいと思います。

条件

  • OS: OracleLinux8
  • シェイプ: VM.Standard.A1.Flex
  • Docker, Gitがインストール済みであること

前提知識

ARMシェイプでは、Oracle Instant Client Release 19.10をインストールする際は下記コマンドでインストール可能です。

$ sudo dnf install oracle-release-el8
$ sudo dnf install oracle-instantclient19.10-basic
$ sudo dnf install oracle-instantclient19.10-sqlplus

これだけの行で手軽に構築ができます

$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Fri May 27 00:04:31 2022
Version 19.10.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

SQL>

これをArmベースのコンテナ上に構築したいと思います。

ArmベースのDocker上でOracleClientを構築

同じインスタンス上にDockerをインストールし、コンテナ上からsqlplusを起動させてみたいと思います。

*dockerとgitを利用しますが、こちらのインストールは割愛致します。

Gitでdocker-imagesを取得

OracleよりDockerfileが展開されているので、下記コマンドを利用し取得

$ mkdir ~/oracle
$ cd ~/oracle/
$ git clone https://github.com/oracle/docker-images
Cloning into 'docker-images'...
remote: Enumerating objects: 15630, done.
remote: Counting objects: 100% (85/85), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 15630 (delta 25), reused 56 (delta 15), pack-reused 15545
Receiving objects: 100% (15630/15630), 10.33 MiB | 11.77 MiB/s, done.
Resolving deltas: 100% (9224/9224), done.
$ ls
docker-images

Dockerfileの編集

22年5月現在、19.15バージョンがarm用にdnf経由でインストールできないため、
Dockerfile内のバージョン情報を19.10に修正

$ cd ~/oracle/docker-images/OracleInstantClient/oraclelinux8/19/
$ vi Dockerfile

$ #ARG updateを15->10に修正
ARG update=10 

ビルド

$ cd ~/oracle/docker-images/OracleInstantClient/oraclelinux8/19/
$ sudo docker build --pull -t oraclelinux8-instantclient:19 .
実行結果
Sending build context to Docker daemon  5.632kB
Step 1/5 : FROM oraclelinux:8
8: Pulling from library/oraclelinux
Digest: sha256:cad3a3dc2dd9f03dec02642dce1f194562e7f21820bc36ceb9f7b070d337fb45
Status: Image is up to date for oraclelinux:8
 ---> 5c8ddda83e1b
Step 2/5 : ARG release=19
 ---> Running in fb644d766d08
Removing intermediate container fb644d766d08
 ---> 4e9e9a535e72
Step 3/5 : ARG update=10
 ---> Running in 8da4b4449729
Removing intermediate container 8da4b4449729
 ---> f6fd449cd936
Step 4/5 : RUN  dnf -y install oracle-release-el8 &&      dnf -y install oracle-instantclient${release}.${update}-basic oracle-instantclient${release}.${update}-devel oracle-instantclient${release}.${update}-sqlplus &&      rm -rf /var/cache/dnf
 ---> Running in 3eb91221c9f1
Oracle Linux 8 BaseOS Latest (aarch64)           44 MB/s |  52 MB     00:01
Oracle Linux 8 Application Stream (aarch64)      34 MB/s |  31 MB     00:00
Last metadata expiration check: 0:00:07 ago on Fri May 27 01:00:56 2022.
Dependencies resolved.
================================================================================
 Package                Arch        Version         Repository             Size
================================================================================
Installing:
 oracle-release-el8     aarch64     1.0-2.el8       ol8_baseos_latest      16 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 16 k
Installed size: 18 k
Downloading Packages:
oracle-release-el8-1.0-2.el8.aarch64.rpm        6.4 kB/s |  16 kB     00:02
--------------------------------------------------------------------------------
Total                                           6.4 kB/s |  16 kB     00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : oracle-release-el8-1.0-2.el8.aarch64                   1/1
  Running scriptlet: oracle-release-el8-1.0-2.el8.aarch64                   1/1
  Verifying        : oracle-release-el8-1.0-2.el8.aarch64                   1/1

Installed:
  oracle-release-el8-1.0-2.el8.aarch64

Complete!
Oracle Instant Client for Oracle Linux 8 (aarch  15 kB/s | 3.7 kB     00:00
Dependencies resolved.
===========================================================================================
 Package                             Arch     Version       Repository                 Size
===========================================================================================
Installing:
 oracle-instantclient19.10-basic     aarch64  19.10.0.0.0-1 ol8_oracle_instantclient   47 M
 oracle-instantclient19.10-devel     aarch64  19.10.0.0.0-1 ol8_oracle_instantclient  599 k
 oracle-instantclient19.10-sqlplus   aarch64  19.10.0.0.0-1 ol8_oracle_instantclient  654 k
Installing dependencies:
 libaio                              aarch64  0.3.112-1.el8 ol8_baseos_latest          32 k

Transaction Summary
===========================================================================================
Install  4 Packages

Total download size: 49 M
Installed size: 191 M
Downloading Packages:
(1/4): libaio-0.3.112-1.el8.aarch64.rpm         212 kB/s |  32 kB     00:00
(2/4): oracle-instantclient19.10-sqlplus-19.10. 2.2 MB/s | 654 kB     00:00
(3/4): oracle-instantclient19.10-devel-19.10.0. 3.6 MB/s | 599 kB     00:00
(4/4): oracle-instantclient19.10-basic-19.10.0.  39 MB/s |  47 MB     00:01
--------------------------------------------------------------------------------
Total                                            40 MB/s |  49 MB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : libaio-0.3.112-1.el8.aarch64                           1/4
  Installing       : oracle-instantclient19.10-basic-19.10.0.0.0-1.aarch6   2/4
  Running scriptlet: oracle-instantclient19.10-basic-19.10.0.0.0-1.aarch6   2/4
  Installing       : oracle-instantclient19.10-sqlplus-19.10.0.0.0-1.aarc   3/4
  Running scriptlet: oracle-instantclient19.10-sqlplus-19.10.0.0.0-1.aarc   3/4
  Installing       : oracle-instantclient19.10-devel-19.10.0.0.0-1.aarch6   4/4
  Running scriptlet: oracle-instantclient19.10-devel-19.10.0.0.0-1.aarch6   4/4
  Verifying        : libaio-0.3.112-1.el8.aarch64                           1/4
  Verifying        : oracle-instantclient19.10-basic-19.10.0.0.0-1.aarch6   2/4
  Verifying        : oracle-instantclient19.10-sqlplus-19.10.0.0.0-1.aarc   3/4
  Verifying        : oracle-instantclient19.10-devel-19.10.0.0.0-1.aarch6   4/4

Installed:
  libaio-0.3.112-1.el8.aarch64
  oracle-instantclient19.10-basic-19.10.0.0.0-1.aarch64
  oracle-instantclient19.10-devel-19.10.0.0.0-1.aarch64
  oracle-instantclient19.10-sqlplus-19.10.0.0.0-1.aarch64

Complete!
Removing intermediate container 3eb91221c9f1
 ---> 99312a278fd8
Step 5/5 : CMD ["sqlplus", "-v"]
 ---> Running in edf598253411
Removing intermediate container edf598253411
 ---> 28a1ee35bee2
Successfully built 28a1ee35bee2
Successfully tagged oraclelinux8-instantclient:19

末尾にSuccessfully builtとなっていることを確認

ビルドしたイメージを起動させ、コンテナ上のsqlplusを実行

$ sudo docker run -ti --rm oraclelinux8-instantclient:19 sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Fri May 27 01:06:20 2022
Version 19.10.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

SQL>

これで環境を汚さずに手軽にsqlplus環境を構築することが出来ました。

接続例

docker run時に、-vや-e 引数を利用することでホスト側のtnsnames.oraファイルを利用し接続も可能です。

#Sample

#ホスト側でローカル・ネーミング・パラメータ(tnsnames.ora)を作成
#DBCS上のPDB1の接続先を作成
$ vi tnsnames.ora
PDB1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = db1.subnet1.demovcn1.oraclevcn.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = pdb1.subnet1.demovcn1.oraclevcn.com)
    )
  )

#コンテナ上のsqlplusを利用して接続
$ sudo docker run -ti \
-e ORACLE_HOME=/usr/lib/oracle/19.10/client64/lib \
-v "$(pwd)":/usr/lib/oracle/19.10/client64/lib/network/admin/ \
--rm oraclelinux8-instantclient:19 \
sqlplus sys/testPassword123#@pdb1 as sysdba
#-e でORACLE_HOMEの変数を定義
#-v でホスト側のカレントディレクトリにあるtnsnames.oraファイルをコンテナ上の/usr/lib/oracle/19.10/client64/lib/network/admin/へマウント(カレントディレクトリを渡す)


SQL*Plus: Release 19.0.0.0.0 - Production on Fri May 27 06:18:05 2022
Version 19.10.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.14.0.0.0

#接続できたことの確認
SQL> show con_name

CON_NAME
------------------------------
PDB1
SQL>

参考

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?