Oracle CloudのDBにWindowsから接続する
Oracle CloudのDBを作成してWindowsから接続するまでのメモ
きっかけ
Oracle Cloudでは無料で2台のVMを立てられる他にも、20GBのデータベースを2つ作成して使用することができる。
(他社のクラウドと比べても多分一番無料枠が豪華。詳しくは https://www.oracle.com/jp/cloud/free/)
そこで、無料のVMとOracle DBを組み合わせて遊ぼうと思ったが、Oracle DBを初めて触ることもあり、開発マシンからの接続の時点でつまずいたため、環境構築方法?をメモすることにした。
Oracle Instant Clientのインストール
WindowsからOracle Cloud上のDBに接続するためには、Oracle Instant Clientが必要なようなのでインストールする。
ダウンロードは以下のURLにアクセスし、ダウンロード画面から「Instant Client for Microsoft Windows (x64)」を開く。 https://www.oracle.com/jp/database/technologies/instant-client.html
必須なファイルは「Basic Package」のZIPファイル1つのみだが、コマンドプロンプトからの操作が行いたい場合は追加で「Tools - optional packages」の2つをダウンロードしたり、アプリ開発をする場合は追加で「Development and Runtime - optional packages」のZIPをダウンロードしたりする。
なお、Visual C++の再配布可能パッケージをインストールしていない場合は、右側のリンクからMicrosoftのページに移動し、適切なバージョン(今回の場合は「Visual Studio 2015, 2017 and 2019」のx64)をダウンロード・インストールする。
Oracle Instant ClientのZIPのダウンロードが完了したら、ZIP内のファイルを1つのフォルダに展開する。複数のZIPをダウンロードした場合もすべて同じフォルダに展開する。
今回は、C:\oracle-instantclient-basic
に中身を展開した。
展開後、フォルダの中にnetwork\admin
とフォルダを作成しておく。
続いて展開後のフォルダをPATH
に追加する。
https://atmarkit.itmedia.co.jp/ait/articles/1805/11/news035.html
以上でインストール作業は完了。
Oracle DBへの接続準備
続いて、Oracle CloudのDB管理画面からDBへの接続情報をダウンロードする。
DBの管理画面の「DB Connection」ボタンをクリックし、Wallet Typeを選択してDownload Walletする。
2つのDBを立てる場合は、Regional Walletのほうが恐らく便利で良い。
Walletのダウンロード時にパスワードを指定する必要があるため、適当に設定する。(後述するA5M2で接続する場合はこのパスワードを要求されないため長めの乱数でも良いと思う。)
ダウンロードされたZIPファイルの中身をC:\oracle-instantclient-basic\network\admin
の下に展開する。
以上で接続の準備は完了。
Oracle DBへの接続
今回はA5M2(A5:SQL Mk-2 / https://a5m2.mmatsubara.com/)を使用してOracle DBに接続を行う。
データベースの追加画面から「Oracle Database」を選択し、接続方法をOCI経由にして接続文字列とログイン情報を入力する。
接続文字列はWalletをダウンロードした際に入っていたtnsnames.ora
をテキストエディタで開いて確認する。
恐らくDB名にhigh
、medium
、low
がついた文字列があり、これが接続文字列になる。
それぞれの違いは以下のページにまとまっている。簡単に性能と同時実行できるSQL文の数が変わるらしい。
https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/cswgs/autonomous-connect-database-service-names.html
ユーザ名はADMIN
、パスワードはDBを作成する際に指定したパスワード。(Walletダウンロード時のものではない)
正常に接続できると、以下の画像のようになる。
以上でとりあえずWindowsからOracle CloudのDBへの接続は完了。
SQL*Plusの場合
sqlplus "ADMIN/{パスワード}@{接続文字列}"