Autonomous Database にOCIのコンピュートインスタンスからSQL*Plusで接続する

Always Freeのサービス範囲内でできることを試している中でのメモ。

コンピュートインスタンスのOSはOracle Linux 7.9で、Instant Clientではなく通常のクライアントソフトウェア(19c)を用いることにした。

Autonomous Database は 23ai を使ってみる。

クライアントソフトウェアのインストール

オンプレ環境ならどうということはないのだが、OCIだとインストーラの起動に若干手間取る。

事前要件の対応は、いつも通りPreinstallation RPMを使えばよい。

# yum -y install oracle-database-preinstall-19c.x86_64 fontconfig vlgothic-fonts vlgothic-p-fonts policycoreutils-python

インストール先のディレクトリは適当に作成。

# mkdir -p /u01/app/oracle/product/19.0.0/client_1
# chown -R oracle:oinstall /u01
# chmod -R 775 /u01

インストーラを適当なところに展開して、oracleユーザでrunInstallerをたたくのだが、SSHのX11転送がうまく動かない。そもそもSSH接続した時点で以下のメッセージが出ており、X11転送が動いていない。

X11 forwarding request failed on channel 0

ネット上の情報によると、まずは xauth のインストールが必要な模様。

# yum -y install xauth

その上で、ユーザを opc → oracle にスイッチしてもX11転送を機能させるために以下のように設定の追加が必要。

1. opcユーザにて確認
$ xauth list
hostname/unix:10  MIT-MAGIC-COOKIE-1  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

2. oracleユーザに切り替え
$ sudo su - oracle

3. 1. で確認した内容をもとに設定を追加
$ xauth add hostname/unix:10  MIT-MAGIC-COOKIE-1  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
xauth:  file /home/oracle/.Xauthority does not exist

何やら最後にメッセージが出ているが、これで DISPLAY環境変数を設定してからrunInstallerをたたけばウィンドウが転送されてくる。

$ export DISPLAY=localhost:10.0
$ /tmp/client/runInstaller

あとは普通にインストールすればよい。適宜RUも適用する。

Autonomous Databaseへの接続

接続先のAutonomous Databaseはワークロードのタイプを「データ・ウェアハウス」に設定し、ネットワーク・アクセスの設定は「許可されたIP及びVCN限定のセキュア・アクセス」としている。

まず、Autonomous Databaseのアクセス制御リストにコンピュートのIPアドレスを許可するように設定が必要。

なお、Always Freeの範囲ではサービスゲートウェイが使えないため、パブリックIPの方を設定する必要がある。プライベートIPやVCNを指定しても以下のようになりつなげることはできない。

ERROR:
ORA-12506: TNS:listener rejected connection based on service ACL filtering

Autonomous Databaseの詳細画面で、「データベース接続」ボタンを押すと、クライアント資格証明(ウォレット)がダウンロードできるので、これをコンピュートインスタンスに転送しておく。ちなみに「警告」「TLS接続にウォレットは必要ありません。」とか出ているが、これは過去に以下で検証したことのあるTLS暗号化の仕組みだろう。今回はその方法は使わない。

クライアント側でウォレットを使用しないTLS接続の構成 | ちりつもLabo

ダウンロードしたウォレットを含むzipファイルは、ひとまずoracleユーザのホームディレクトリ配下に wallet というディレクトリを掘って展開する。

中身はこんな感じになっており、ウォレットファイルの本体(ewallet.p12 と cwallet.sso)や、Oracle Client側の設定ファイル(sqlnet.ora, tnsnames.ora)などが含まれている。

[oracle@inst1 wallet]$ ls
cwallet.sso  ewallet.p12  ewallet.pem  keystore.jks  ojdbc.properties  README  sqlnet.ora  tnsnames.ora  truststore.jks

今回はSQL*Plusからの接続が目的なので、この sqlnet.ora と tnsnames.ora の中身を Clientの$ORACLE_HOME/network/admin 配下のファイルに追記する。sqlnet.ora に関しては WALLET_LOCATION の DIRECTORY の記載を展開先のディレクトリに置き換える必要あり。

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/oracle/wallet")))
SSL_SERVER_DN_MATCH=yes

tnsnames.ora には high, low, medium の3種類の接続記述子が書かれているが、とりあえず適当に一つ選んで接続してみる。

[oracle@inst1 wallet]$ sqlplus ADMIN@adb1_high

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Apr 6 13:15:58 2025
Version 19.26.0.0.0

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

Enter password:
Last Successful login time: Sun Apr 06 2025 05:20:23 +00:00

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

SQL> show user
USER is "ADMIN"

問題なし。それにしても、いつまでたっても23aiのオンプレ版が出ないので、製品版に近いものを無料で触るにはこうするしかないのがつらいところ。

コメント