【環境構築】Oracle Instant Client (on Docker)+Oracle Cloud Autonomous Database

IT技術

概要

Oracle Cloud の Autonomous Database を用いてデータベースを作成する。
クライアントとしてDocker上にOracle Instant Clientコンテナを作成し、SQL*Plusで接続する。

本記事のシステム環境

  • データベース:
    Autonomous Database for Transaction Processing (ATP) Oracle Database 23ai
  • クライアント (Docker):
    • OS:Oracle Linux 9
    • MW:Oracle Instant Client 23ai

環境構築

Oracle Cloud Autonomous Database

Oracle CloudのAutonomous Database管理画面より、「Autonomous Databaseの作成」を実行する。

今回、ワークロード・タイプは「トランザクション処理」を選択した。

無料枠で作成したいため「Always Free」を、データベース・バージョンは「23ai」を選択した。

ADMINユーザのパスワードを設定する。

ネットワーク・アクセスは、「すべての場所からのセキュア・アクセス」を選択。

これでデータベースを作成した。

データベース起動後、「データベース接続」を選択。

「ウォレットのダウンロード」を実行し、クライアント資格証明(ウォレット)をダウンロードしておく。

Oracle Instant Client (on Docker)

ダウンロードしておいたクライアント資格証明(ウォレット)を任意のディレクトリに配置し、zipファイルを解凍する。

[root@daipubvm002 oracleinstantclient]# pwd
/daidata/docker/test/oracleinstantclient
[root@daipubvm002 oracleinstantclient]# ls -l Wallet_VUN29P1JN1TGIPZQ.zip 
-rw-r--r-- 1 root root 22007  5月  3 09:51 Wallet_VUN29P1JN1TGIPZQ.zip
[root@daipubvm002 oracleinstantclient]# unzip Wallet_VUN29P1JN1TGIPZQ.zip 
Archive:  Wallet_VUN29P1JN1TGIPZQ.zip
  inflating: ewallet.pem             
  inflating: README                  
  inflating: cwallet.sso             
  inflating: tnsnames.ora            
  inflating: truststore.jks          
  inflating: ojdbc.properties        
  inflating: sqlnet.ora              
  inflating: ewallet.p12             
  inflating: keystore.jks            
[root@daipubvm002 oracleinstantclient]#

sqlnet.ora を変更する。
DIRECTORY値について、ウォレットを配置したディレクトリパスに書き換える。

[root@daipubvm002 oracleinstantclient]# vi sqlnet.ora
・・・
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
↓
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/daidata/docker/test/oracleinstantclient")))
・・・
[root@daipubvm002 oracleinstantclient]#

Oracle社がGitHub上に公開している資材をクローンする。

[root@daipubvm002 oracleinstantclient]# pwd
/daidata/docker/test/oracleinstantclient
[root@daipubvm002 oracleinstantclient]# git clone https://github.com/oracle/docker-images.git
Cloning into 'docker-images'...
remote: Enumerating objects: 19133, done.
remote: Counting objects: 100% (2305/2305), done.
remote: Compressing objects: 100% (398/398), done.
remote: Total 19133 (delta 2025), reused 1928 (delta 1905), pack-reused 16828 (from 3)
Receiving objects: 100% (19133/19133), 15.70 MiB | 5.83 MiB/s, done.
Resolving deltas: 100% (11240/11240), done.
[root@daipubvm002 oracleinstantclient]# ls -ld ./docker-images
drwxr-xr-x 35 root root 4096  5月  2 20:16 ./docker-images
[root@daipubvm002 oracleinstantclient]#

docker-compose.yml を作成する。

[root@daipubvm002 oracleinstantclient]# cd ../
[root@daipubvm002 test]# pwd
/daidata/docker/test
[root@daipubvm002 test]#
[root@daipubvm002 test]# vi docker-compose.yml 
version: '3'

services:
  testserver:
    image: oracleinstantclient:vrfy
    build: ./oracleinstantclient/docker-images/OracleInstantClient/oraclelinux9/23 ※1
    hostname: testserver
    networks:
      - dockernet
    tty: true ※2
    stdin_open: true ※2
    volumes:
      - /daidata/docker/test/oracleinstantclient:/daidata/docker/test/oracleinstantclient ※3
    environment:
      TNS_ADMIN: /daidata/docker/test/oracleinstantclient ※3
    command:
      sqlplus <DBユーザ>/<DBパスワード>@<TNS接続識別子> ※4

networks:
  dockernet:
[root@daipubvm002 test]#
  • ※1 クローンしたGit資材のディレクトリパスを指定
  • ※2 標準入力が可能なように設定
  • ※3 クライアント資格証明(ウォレット)を配置したディレクトリパスを指定
  • ※4 作成したDBユーザ/パスワードと、tnsnames.oraに記載されているTNS接続識別子を記載
    例) sqlplus ADMIN/*****@vun29p1jn1tgipzq_medium

DB接続(sqlplus)

docker-compose run コマンドを実行するとコンテナが立ち上がり、SQL*Plus接続できる。
(–rmオプションを付与することで、終了後にコンテナを自動削除してくれるのでゴミとして残らない。)

[root@daipubvm002 test]# docker-compose run --rm testserver
Creating test_testserver_run ... done

SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Sat May 3 05:01:15 2025
Version 23.7.0.25.01

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

Last Successful login time: Sat May 03 2025 04:58:11 +00:00

Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.8.0.25.05

SQL> select 1 from dual;

         1
----------
         1

SQL>
タイトルとURLをコピーしました