こんにちは。Marketing & Salesの大野です。今回はちょっとだけTechな内容にしていきたいと思います。
先日行われたOracle OpenWorld 2019でAutonomous Database/Oracle Cloud Infrastructureを継続して無償利用できる「Always Free」サービスの提供というアナウンスがされました。
そして、Microsoft Azureとの相互接続:現在、北米東海岸とロンドン・リージョンでOCIとAzureは相互接続されていますが、世界中で加速していくとのことです。
全社の無償利用は使ってみない手はないということで、今回はOracle Cloudのアカウント作成からAutonomous Databaseの作成、AzureのApp Serviceから接続というところをクイックにやってみたいと思います。
アカウント作成や、Autonomous Databaseの説明は結構情報がすでにありますので、ライトに紹介します。
まずは、ここからアカウントの作成です。
Always Freeと30-day Free Trialができますよ~と謳っていますね。
アカウント作成とAutonomous Databaseの作成で注意・ポイントになりそうなのは3点。
- 本人確認のための携帯SMS送信
- パスワードの制約
- クライアント資格証明書(ウォレット)のダウンロード
1.本人確認のための携帯SMS送信
+81からの発信となりますので、頭0なくしての携帯番号で送信となりますが、なぜか私の場合docomoの携帯には何度やっても送られてきませんでした。
softbankの携帯番号に変えたらあっさり送信されて本人確認できました。
ここでかなり時間とられてしまいました。
2.パスワードの制約
9つの条件をみたしたパスワードを設定する必要があります。
3.クライアント資格証明書(ウォレット)のダウンロード
アカウント作成後に、Autonomous Databaseを作成します。Database作成後にこのDatabaseに接続するクライアントにウォレットをダウンロードする必要があります。
ここでもまたウォレットのパスワードを設定することになります。
クライアント資格証明書のZipファイル形式でダウンロードするのですが、この中にewalletとsqlnet.ora、tnsnames.oraが一緒に含まれています。
ここまでできれば、いよいよAppServiceからAutonomous Databaseへの接続してデータを表示させるアプリケーションの作成です。
アプリの目的として、Autonomous Databaseに接続してデータベースの内容が確認できれば良いので、ざっくりとした動作は以下の通りです。
- コネクションオープン
- “select table_name from all_tables”でテーブル一覧を取得
- 結果セットを画面に表示
AppServiceで動作させるための作業ポイントは3つ
- NugetからOracle.ManagedDataAccessをインストール
- 接続文字列のウォレットパス編集
- App Serviceのアプリケーション設定を編集(これが一番のポイント)
1.NugetからOracle.ManagedDataAccessをインストール
これはASP.NET、ASP.NET Coreでもそれぞれオラクルに接続するためにManagedDataAccessをインストールします。
2.接続文字列のウォレットパス編集
接続文字列にあるSECURITYにウォレットのパスを設定します。
今回は実行ファイルと同じ場所に配置して、動作させるようにしたので、下記のように記述しています。
(SECURITY = (MY_WALLET_DIRECTORY =.))
3.App Serviceのアプリケーション設定を編集
これがApp Serviceにデプロイする上で一番のポイントになります。
アプリケーション設定に
“WEBSITE_LOAD_USER_PROFILE”を追加し
値に“1”
をセットします。
これがAzure上でOracle ウォレットを利用する設定となります。
これが入っている入っていないでoracleへの接続ができるできないが変わります。
とういわけでアプリケーションをビルドしてAzureにデプロイして動作を確認してみます。
無事テーブル一覧が表示されています。
ちゃんとApp Service上で動作していることもアドレスから確認できます。
まとめ
一番のポイントはウォレットの扱いにつきます。
ここさえおさえれば、プログラムそのものはなんら従来通りです。
Freeプランで利用できるスペックは非常に低いですが、試しに利用するには便利です。
アプリケーションレベルでの利用は確認できたので、次は、相互接続にチャレンジしてみたいと思います。