Oracle Instant Client を docker 上で利用して、 ADW へ接続する
Autonomous Data Warehouse Cloud (ADW) を使っていると、ちょっとしたデータや環境の確認のため、 Oracle Instant Client (SQL*Plus など) が使いたい場面があるかと思います。 yum などからもインストール可能なので、入れるのは簡単なのですが、あんまりローカルになんでも入れたくないよな、というときのために、 docker イメージが用意されています。今回はそれを試して見ようと思います。
docker image のデプロイ
まずは docker image をデプロイします。 12.x の docker image は docker hub 上にあるようなのですが、最新のイメージは github の Oracle のレポジトリ上にしかなさそうなのでそれを利用します。
Readme はこちらです。 docker-images/OracleInstantClient at master · oracle/docker-images · GitHub
docker とか git は入っている前提でスタートします。そのあたりの良記事はたくさんあると思うので!環境は Oracle Linux 7.6 で試しています。
とりあえず適当なディレクトリに、 Oracle が提要している docker image を git clone で持ってきます。
[opc@kokane-ol7-01 work]$ git clone https://github.com/oracle/docker-images.git
その上で、Oracle Instant Client の docker image のディレクトリに移動し、 docker build します。
[opc@kokane-ol7-01 work]$ cd docker-images/OracleInstantClient/dockerfiles/18.3.0/ [opc@kokane-ol7-01 18.3.0]$ docker build -t oracle/instantclient:18.3.0 .
その後、 docker images で確認すると、 oracle/instantclinent のイメージが確認できます。
[opc@kokane-ol7-01 work]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE oracle/instantclient 18.3.0 e1ec5b52486e 12 days ago 362MB oraclelinux 7-slim c3d869388183 3 weeks ago 117MB
docker image の利用と ADW への接続
まずは接続先の ADW の接続用 Credential ファイルをダウンロードします。もし ADW のインスタンスを立ててみる場合には、システムエグゼさんのブログなどに詳しく記載いただいています。 www.system-exe.co.jp
現在は、 Console の ADW の Detail 画面から、DB Connection ボタンをクリックしてダウンロード可能です。
ダウンロードしたファイルをどこか適当なディレクトリに展開頂き、 sqlnet.ora の DIRECTORY を Credential ファイルをおいた場所に変更します。 (ここでは /home/opc/credentials としました)
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/opc/credentials"))) SSL_SERVER_DN_MATCH=yes
これで docker run する準備が整いました。github の Readme を参考にしつつ、-e で環境変数 TNS_ADMIN、 -v で Credentials を格納したディレクトリを渡す形で実行します。 (-v の渡し方は冗長なので、もっといい書き方があるのかもしれません。。)
[opc@kokane-ol7-02 credentials]$ docker run -ti --rm -e TNS_ADMIN=/home/opc/credentials -v /home/opc/credentials:/home/opc/credentials oracle/instantclient:18.3.0 sqlplus admin/パスワード@kkadw01_low SQL*Plus: Release 18.0.0.0.0 - Production on Sun Feb 17 05:29:43 2019 Version 18.3.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Last Successful login time: Sun Feb 17 2019 05:26:13 +00:00 Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0 SQL>
まとめ
docker hub に 18.3 がないのが若干手間ですが、簡単に docker 上で sqlplus を動かすことができました。
とはいえ、Oracle Instant Client ぐらいローカルにいれてもいいんじゃない?という場合は、いまどきは yum からインストールできるそうです。 Oracle Instant Client RPMs Now Available on Oracle Linux Yum Server (yum.oracle.com) | Oracle Linux Blog
Autonomous DB を使う上では、このような形で管理用のインスタンスをクラウド上に準備したほうがなにかと便利だなと思っている今日このごろです。