AI can fly !!

AI がやりたい Web エンジニアのアウトプット (AI の知識は無い)

【Oracle Cloud】Autonomous Transaction Processing への接続方法まとめ【Free Tier】

ORACLE CLOUD

はじめに

プライベートで使用している Oracle Database 19c から、 Oracle Cloud Infrastructure の Autonomous Database へデータベースの移行を行いました。

移行先は Autonomous Database のトランザクション処理に最適化された Autonomous Transaction Processing です。

Autonomous Transaction Processing をプロビジョニングしてデータベースを作成するまでは、 Web ブラウザから GUI ですべての操作を完了することができるので、特に難しいことはありません。

Oracle Data Pump を使用したデータ移行の方法は 別記事 を参照いただくとして、今回はクライアントから Autonomous Transaction Processing への接続方法についてまとめました。

ai-can-fly.hateblo.jp

ちなみに、 Oracle Cloud には Free Tier という常時無償のプランがあり、今回取り上げている Autonomous Transaction Processing の Always Free Autonomous Database では、一つのデータベースあたり 20GB まで Exadata ストレージを永久に無料で使用することができます。

動作環境

Cloud

Cloud
Oracle Cloud Infrastructure
Product
Oracle Autonomous Transaction Processing

Autonomous Transaction Processing とは

ハードウェアの構成や管理、ソフトウェアのインストールなどのデータベース管理を必要とせず、ワークロード要件に応じて自動スケーリングなどを行う Oracle Cloud 上に構築されたクラウド・データベース・サービスです。

OLTP (オンライントランザクション処理) およびリアルタイム分析アプリケーションのデータベース操作に最適化され、ミッションクリティカルなアプリケーションのリクエストを満たすために即座にスケーリングできる自動運転、自動保護、自己修復データベースサービスを提供します。

www.oracle.com

簡単に言えば、運用・保守などをほとんど考えずに使用できる、めちゃくちゃ使い勝手の良い Oracle Database です!

Client

OS Version
Windows 10 Pro 1909
Application Version
PowerShell 5.1.18362.752
SQL*Plus (Oracle Client) Release 19.0.0.0.0 - Production

前提条件

  • Oracle Cloud Infrastructure アカウントを作成済み
  • Oracle Autonomous Transaction Processing インスタンスをプロビジョニング済み
  • クライアント PC に Oracle Client をインストール済み

Autonomous Transaction Processing への接続

Autonomous Transaction Processingは Oracle Net Services をサポートしており、インターネットを介して複数の方法で接続することができます。

今回はクライアント資格証明 (ウォレット) を使用して、 Autonomous Transaction Processing へ Oracle Call Interface (OCI) 接続を行う方法を取り上げます。

接続準備

クライアント資格証明 (ウォレット) のダウンロード

まず、クライアント資格証明 (ウォレット) を Oracle Cloud Infrastructure コンソール から ダウンロードします。

ダウンロードの詳細は、 Autonomous Transaction Processing の公式ドキュメントをご覧ください。

docs.oracle.com

ダウンロードしたクライアント資格証明 (ウォレット) は Zip 形式に圧縮されていますが、 Oracle Call Interface 接続で使用する際は解凍する必要はないので、Zip 形式のまま任意のディレクトリに格納します。

格納場所に指定はありませんが、接続情報が記載されたファイルなのでセキュアなディレクトリに保管しましょう。

今回は例として、ユーザのホームディレクトリの直下へ専用のディレクトリを作成して格納します。

C:\Users\hrgm\OracleCloud\Wallet.zip

なお、クライアント資格証明 (ウォレット) は Zip 形式のまま使用しますが、後述する sqlnet.oratnsnames.ora の編集を行う際に圧縮ファイルの中のファイルを参照する必要があるため、どこでもいいので一時的なワーキングディレクトリに解凍もしておきます。

sqlnet.ora (プロファイル構成ファイル) の更新

解凍したクライアント資格証明 (ウォレット) の中にある sqlnet.oraテキストエディタで開き、その中の 1 行をクライアント PC にインストールされている Oracle Client の sqlnet.ora へ追記します。

[クライアント資格証明 (ウォレット)]/sqlnet.ora

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH=yes

sqlnet.oraWALLET_LOCATION = ... の 1 行をコピーし、クライアント PC の sqlnet.ora の最終行にペーストします。

ペースト後、 DIRECTORY の値を Zip 形式のクライアント資格証明 (ウォレット) を格納したディレクトリパスとクライアント資格証明 (ウォレット) ファイル名に修正し、ファイルを上書き保存します。

[ORACLE_HOME]/network/admin/sqlnet.ora

...(元々の記述)

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="C:\\Users\\hrgm\\OracleCloud\\Wallet")))

Windows の場合、 DIRECTORY に指定するクライアント資格証明 (ウォレット) のファイル名に拡張子は付けません。 また、バックスラッシュはエスケープする必要があるので注意してください。

tnsnames.ora (TNS 構成ファイル) の更新

sqlnet.ora と同様に、解凍したクライアント資格証明 (ウォレット) の中にある tnsnames.oraテキストエディタで開き、クライアント PC の tnsnames.ora へ追記します。

[クライアント資格証明 (ウォレット)]/tnsnames.ora

(全文)

こちらは sqlnet.ora と違い編集は不要なので、クライアント PC の tnsnames.ora の最終行へそのまま全文をコピー & ペーストして大丈夫です。

[ORACLE_HOME]/network/admin/tnsnames.ora

...(元々の記述)

(最終行へ全文を貼り付け)

※ セキュリティのため、 tnsnames.ora の内容は記載していません。

Oracle Database ツールでの接続

SQL*Plus

tnsnames.ora に登録されていれば、あとはいつも通りネットワーク・サービス名 (net_service_name) を使用してデータベースへ接続できます。

1. SQL*Plus 起動

PowerShell

sqlplus /nolog

2. ローカル・ネーミング・メソッドによるデータベース接続

CONNECT ADMIN/[password]@[net_service_name]

ユーザ名に ADMIN 、パスワードには Autonomous Transaction Processing のプロビジョニングの際に決めたパスワードを入力します。

ネットワーク・サービス名は、Autonomous Database には予め 5 種類のデータベース・サービス名が用意されており、その中から選択する形になります。

データベース・サービス名
[database_name]_tpurgent
[database_name]_tp
[database_name]_high
[database_name]_medium
[database_name]_low

使用するデータベース・サービス名によってパフォーマンスや同時実行性が異なりますので、詳細については公式ドキュメントをご覧ください。

docs.oracle.com

データベース接続後は、通常の Oracle Database と同じように SQL を発行することができます。

SQL Developer

SQL Developer でクライアント資格証明 (ウォレット) を使用してデータベースを接続する場合は、専用の接続タイプを指定して接続を行います。

1. データベース接続の作成/選択ダイアログを開く

SQL Developer を起動し、接続の作成ボタン (以下の画像の赤枠内) を押下して、データベース接続の作成/選択ダイアログを開きます。

データベース接続の作成

2. ユーザ情報を入力

ユーザ名に ADMIN 、パスワードには Autonomous Transaction Processing のプロビジョニングの際に決めたパスワードを入力します。

接続タイプは クラウド・ウォレット を選択し、構成ファイルにクライアント資格証明 (ウォレット) ファイルを指定します。

サービスには前述した SQL*Plus と同様、事前定義されている 5 種類のデータベース・サービス名から選択します。

ユーザ情報を入力

3. 接続

あとは接続ボタンを押下すれば、 SQL Developer から Autonoumous Transaction Processing のデータベースへ接続できます。

接続後は SQL*Plus と同様に、通常の Oracle Database のように各種操作を行うことができます。

クライアントアプリケーションからの接続

その他のクライアントアプリケーションからの接続に関しては、 SQL*Plus と同様にネットワーク・サービス名を使用したローカル・ネーミング・メソッドによるデータベース接続を行うことで、特に Cloud を意識することなく使用することができるはずです。

クライアント資格証明 (ウォレット) を使用しているネットワーク・サービス名さえ指定すれば、あとは今まで通り使用できると思いますが、詳細については使用するクライアントアプリケーションやライブラリの公式ドキュメントなどを確認してください。

おわりに

クラウドというだけで何となく難しいイメージを持ってしまっていましたが、実際は Web ブラウザを介して GUI で簡単に操作・管理ができ、クライアントからの接続についても特に難しいことはありませんでした。

今まではローカルの PC に Oracle Database をインストールして使用していたため、 PC を替える度にデータベースの作成・データ移行をする必要がありましたが、クラウドへ移行したことによってそういった手間から解放されると共に、物理破損によるデータ消失のリスクも軽減することができました。

それもこれも、永久無料 (常時無償) の Oracle Cloud Free Tier という Oracle の超太っ腹なサービスがあったからこそ実現できたもので、他にクラウドRDBMS で永久無料なのは Heroku Postgres くらいしかないため、 Oracle 様には足を向けて寝られません。

Oracle Cloud は AWSGCP の影に隠れがちですが、Oracle 大好きな僕としては是非ともシェアを伸ばしていってほしいと思います。

そして、願わくばシェアが伸びた暁には、もっと Free Tier の無料枠を拡大してくれることを… (*´∀ˋ人)