概要
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>