ADBの扉は、簡単には開かせてくれなかった
オンプレ時代――DBに接続するとき、俺たちはこうしていた。
sqlplus [username]/[password]@[DB名]
あるいは、tnsnames.ora をゴリゴリ書き換えて、複雑な環境でも接続できるようにするのがDBAの腕の見せ所だった。
だがADBは違った。
ADBは、“Wallet”という魔法陣がないと入れない世界だった。
Walletってなんだ?
Walletとは、ADBへの接続に必要なすべての情報が詰まったZIPファイルだ。
中には:
- 接続用証明書 (.pemファイル)
- クライアントの認証や通信の暗号化に使用される証明書(例: cwallet.sso, ewallet.p12, truststore.jksなど)
- 秘密鍵
- サーバーとの安全な通信を確立するためのキーファイル(証明書バンドル内に格納)
- 接続文字列ファイル(tnsnames.ora)
- ADBインスタンスへの接続に必要なサービス名/エンドポイント情報が記載されている
- 接続設定ファイル(sqlnet.ora)
- セキュア接続やWalletの参照パス、SSL/TLS設定などが記載されている
- READMEファイル(README.txt)
- Walletの使用方法やセットアップ手順を説明したテキストファイル
などが入っていて、これらがADBの認証と暗号化通信の鍵になっている。
OCIの画面からダウンロードして、ローカルの適切なディレクトリに展開し、それを使ってSQL DeveloperやSQL*Plusから接続する仕組みだ。
オンプレDBAが最初にハマる3つのポイント
1. Walletファイルの場所を指定しないと接続できない
OCIからWalletをダウンロードして、ZIPを回答したーー
しかし、それだけでは ADBという異世界の扉は開かない。
「魔法陣は描いた。だが、どこにあるのかを教えてやらねばなるまい」
そう、Walletファイルの"場所"をOralceクライアントに教える必要がる。
その方法こそが、我らの TNS_ADMINの設定 だ!
TNS_ADMIN 環境変数にウォレットの保存先を設定する
export TNS_ADMIN=[ウォレットの保存先ディレクトリ]
次に、sqlnet.ora の下記の行を編集し、ウォレットの保存先を置き換える
編集前:
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
編集後:
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY=$TNS_ADMIN)))
オンプレ時代の俺は、sqlnet.oraを手書きしていた。
- SSL接続設定
- ログ出力場所
- タイムアウト制御
- 認証方式の切り替え
・・・
それらをすべてこのファイルで制御していた。まさに”通信魔法の呪文書”だった。
しかし、ADBのWallet ZIPには最初からsqlnet.oraが準備されている!
呪文書はもう記す必要がないーーすでに魔法陣に刻まれていたから。。。
※ Walletを利用した接続方法は、OCI公式チュートリアルに手順が載っています。
https://oracle-japan.github.io/ocitutorials/adb/adb104-connect-using-wallet/#anchor3-3
2. 接続名(TNS)が独特すぎる
Wallet内の tnsnames.ora に定義されているTNS名はこうなっている:
[DB名]_low
[DB名]_medium
[DB名]_high
「なんだこれ?」と思うが、これは接続時の同時実行性や並列処理などの違いを表している。
(簡単に言うと、負荷調整用のプロファイル)
※OCI公式文書で、接続サービスは理解しておこう
https://oracle-japan.github.io/ocitutorials/adb/adb201-service-names/
3. SQL DeveloperなどGUIツールの設定がややこしい
Walletを使うためには、SQL Developerの「詳細接続」画面で接続タイプ「クラウド・ウォレット」や「サービス名」「ディレクトリ」を明示的に指定する必要がある。
GUIツールでADBに接続しようとして
「ORA-29024: Certificate validation failure」
…となって泣いたのは俺だけじゃないはず。
※ SQL Developer を使った接続方法も、OCI公式チュートリアルに手順が載っています。
https://oracle-japan.github.io/ocitutorials/adb/adb104-connect-using-wallet/#anchor3-3
セキュリティが違う、それは責任も違う
ADBに接続するには、 「正しいWallet」「クライアント側の設定」 が必須。
これはめんどくさいというより、セキュリティ設計がクラウド用に最適化されているということだ。
オンプレでは自社のネットワークが“盾”だったが、クラウドでは「Walletが盾であり鍵」。
接続はハードル。でも越えたら世界が変わる
ADBに接続できるようになると、そこには
SQL Developerでの視覚的な操作
OCIコンソールからの管理操作
APEXなどのWeb UIサービス
…など、オンプレでは味わえなかった快適な操作空間が待っていた。
「あ、俺、ADBに住めるかも」
ちょっとだけ、そう思った。
次回予告
第5話|自動パッチと自動バックアップに戸惑うDBAの叫び
「気づいたらパッチが当たってた!?」「バックアップが勝手に取られてる?」
そんな自動化の嵐の中で、DBAとしての不安と希望が交錯する。