1. はじめに
Windows 11のWSL2のUbuntu上のDockerで、Oracle 23 ai Freeコンテナを動かせるようにします。
インストール後にコマンドhistoryを元に記述しているので抜けがあるかもしれません。
2. Oracle 23 ai Dockerイメージダウンロード
docker pull container-registry.oracle.com/database/free:latest
Dockerイメージの確認。
docker images
3. Oracleコンテナ起動
コンテナの1521ポートを、デフォルトのdocker0ブリッジ(172.17.0.0)にポートフォワードする。同一ブリッジの他のコンテナ、DockerホストのUbuntu、WSLのホストのWindows 11から接続できるようになる。
ポートフォワード設定はdocker runでしかできず、イメージからコンテナを作成後にポートフォワード設定する場合には、コンテナをdocker commitしてイメージとして保存し、docker runし直す必要がある。
ブリッジのIPアドレスがWSLが自動的に振るIPアドレスとぶつかる場合があるので要注意らしい。
Oracle 23 ai DockerイメージがRHEL 8.9ベースで、Oracleのリポジトリに繋がらず、firewalldが入っていないので、同一ブリッジから繋ぎ放題。
--nameは任意の名称。
docker run -d --name oracle-db -e ORACLE_PWD=<systemユーザーに設定するパスワード> -p 1521:1521 container-registry.oracle.com/database/free
コンテナの確認。-aで止まっているコンテナも表示される。
docker ps -a
接続してIPアドレス確認。
docker exec -it oracle-db bash
ifconfig
自分の場合は 172.17.0.2 でした。
DB接続確認。
sqlplus system/<設定したパスワード>
または、
sqlplus system/<設定したパスワード>@localhost:1521/FREEPDB1
SELECT SYSDATE FROM DUAL;
EXIT
4. 動作確認用にAlmaLinuxイメージダウンロード、起動
実施時点では最新は9.4でした。
docker image pull almalinux
--nameは任意。
docker run -it --name myalmalinux almalinux:latest /bin/bash
5. Oracle Instant Client 21ダウンロード
Windows 11でダウンロードしました。
ダウンロードページの最新の Oracle Instant Client 21を使いましたが、後述の 公式情報の ld.so.conf の設定のコマンド例だと instantclient_23_3 となっているので、どこかに23がある? 見つからなかった。
Oracle Instant Client - Oracle Databaseに接続するための無償のツールとライブラリ | Oracle 日本
https://www.oracle.com/jp/database/technologies/instant-client.html
Oracle Instant Client Downloads | Oracle 日本
https://www.oracle.com/jp/database/technologies/instant-client/downloads.html
5.1. Linux 64bit
Linux x86-64用Instant Client(64ビット) | Oracle 日本
https://www.oracle.com/jp/database/technologies/instant-client/linux-x86-64-downloads.html
インストール時点の最新が21.11.0.0.0。
自分が必要なものをダウンロードする。
Basicパッケージ(ZIP)
instantclient-basic-linux.x64-21.11.0.0.0dbru.zip
SQL*Plusパッケージ(ZIP)
instantclient-sqlplus-linux.x64-21.11.0.0.0dbru.zip
ツール・パッケージ(ZIP)
instantclient-tools-linux.x64-21.11.0.0.0dbru.zip
SDKパッケージ(ZIP)
instantclient-sdk-linux.x64-21.11.0.0.0dbru.zip
JDBC Supplementパッケージ(ZIP)
instantclient-jdbc-linux.x64-21.11.0.0.0dbru.zip
ODBCパッケージ(ZIP)
instantclient-odbc-linux.x64-21.11.0.0.0dbru.zip
プリコンパイラ・パッケージ(ProCとProCOBOL用の追加ファイル) は必要に応じて。
ダウンロードしたファイルをLinuxコンテナへコピーする。
WSLのUbuntu(等)で、
cd /mnt/C/Users/<Windowsユーザー名>/Downloads/
docker cp instantclient-basic-linux.x64-21.11.0.0.0dbru.zip myalmalinux:/tmp/
docker cp instantclient-sqlplus-linux.x64-21.11.0.0.0dbru.zip myalmalinux:/tmp/
docker cp instantclient-odbc-linux.x64-21.11.0.0.0dbru.zip myalmalinux:/tmp/
docker cp instantclient-tools-linux.x64-21.11.0.0.0dbru.zip myalmalinux:/tmp/
docker cp instantclient-sdk-linux.x64-21.11.0.0.0dbru.zip myalmalinux:/tmp/
5.2. Windows 64bit
Microsoft Windows(x64)64ビット用Oracle Instant Client | Oracle 日本
https://www.oracle.com/jp/database/technologies/instant-client/winx64-64-downloads.html
インストール時点の最新が21.9.0.0.0。
自分が必要なものをダウンロードする。
Basicパッケージ
instantclient-basic-windows.x64-21.9.0.0.0dbru.zip
SQL*Plus パッケージ
instantclient-sqlplus-windows.x64-21.9.0.0.0dbru.zip
ツール・パッケージ
instantclient-tools-windows.x64-21.9.0.0.0dbru.zip
SDK パッケージ
instantclient-sdk-windows.x64-21.9.0.0.0dbru.zip
JDBC Supplement パッケージ
instantclient-jdbc-windows.x64-21.9.0.0.0dbru.zip
ODBC パッケージ
instantclient-odbc-windows.x64-21.9.0.0.0dbru.zip
プリコンパイラ・パッケージ(ProCとProCOBOL用の追加ファイル) は必要に応じて。
6. Oracle Instant Client 21インストール
6.1. Linux(AlmaLinux 9.4)
rootで作業する。
・oracleユーザー作成(なくてもいい)
dnf install passwd zip
useradd oracle
passwd oracle
・ダウンロードしたzipを /home/oracle に全て展開する。(/home/oracle/instantclient_21_11/ ができて全てその中に入る)
su - oracle
unzip /tmp/instantclient-basic-linux.x64-21.11.0.0.0dbru.zip
unzip /tmp/instantclient-sqlplus-linux.x64-21.11.0.0.0dbru.zip
unzip /tmp/instantclient-odbc-linux.x64-21.11.0.0.0dbru.zip
unzip /tmp/instantclient-tools-linux.x64-21.11.0.0.0dbru.zip
unzip /tmp/instantclient-sdk-linux.x64-21.11.0.0.0dbru.zip
export ORACLE_HOME=/home/oracle/instantclient_21_11
export PATH=$PATH:$ORACLE_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME
これだけだと.so不足でsqlplusが動かない。
不足ライブラリはlddコマンドで確認できる。
dnf install libaio
libclntshcore.so 等が存在するのにどうしてもnot foundになる。
公式情報の通りに ld.so.conf でsoファイルが見ることができるようにする。
OCI用のInstant Clientライブラリ
https://docs.oracle.com/cd/F82042_01/lacli/instant-client-shared-libraries.html
echo /opt/oracle/instantclient_21_11 > /etc/ld.so.conf.d/oracle-instantclient.conf
ldconfig
sqlplus system/<設定したパスワード>@<oracle-dbコンテナのIPアドレス>:1521@FREEPDB1
SELECT SYSDATE FROM DUAL;
EXIT
ついで。
dnf install unixODBC
6.2. Windows 11
ダウンロードしたzipを展開して任意のパスに置く。例:C:\instantclient_21_9\
コマンドプロンプトかPowerShellでそのディレクトリに移動し、
sqlplus system/<設定したパスワード>@<oracle-dbコンテナのIPアドレス>:1521@FREEPDB1
SELECT SYSDATE FROM DUAL;
EXIT