Autonomous Database検証環境を無料で作って触ってみる


OCIの特徴を語る上で、Autonomous Databaseは外すことができません。
Oracle社の技術を集約したサービスと言っても過言ではなく、気になる方も多いのではないかと思いますが、コストを払ってまではちょっと。。といった方も多いのではないでしょうか。
実は、Autonomous Databaseおよびその周辺環境はAlways Tier(無料トライアルアカウント)の範囲で構築、操作が可能です。
本記事は、無料範囲内でAutonomous Databaseを触るための環境構築および、Autonomosu Databaseの操作をご紹介します。

環境概要

本環境でできること

・Database Actionを利用したSQL DeveloperライクなAutonomous Database操作
・Cloud Shellを利用したsqlplus経由でのAutonomous Database操作
・Object Storageからのデータロード等

アーキテクチャ図、構築リソース(全て無料枠)

Autonmous Databaseを触るだけならObject StorageとIAMリソースは不要ですが、各種検証にあたってデータロード等必要かと思うので、「Object Storage」およびObject StorageへAutonmous Databaseがアクセスするために必要な「IAMリソース」も併せて作成しています。

リソース種別 概要
Autonomous Database Data Warehouse。アクセス元指定無し。
Object Storage プライベート設定
IAMユーザ/グループ Object Storageへのアクセス権をPolicyにて付与されたグループへ所属

環境構築

本記事では、OCI CLIは利用せず、コンソールからの構築前提で進めます。

手順
1. Autonomosu Databaseを作成する
2. Object Storageを作成する
  (本記事では手順は省略します。20GiB無料で利用できます)
3. IAMリソースを作成する

1. Autonomosu Databaseを作成する


OCIコンソールへログインして、Autonomous Databaseのコンソール画面へ移動。
「Autonomosu Databaseの作成」を選択。


コンパートメント :Autonomous Databaseを構築するコンパートメントを指定。
表示名 :コンソールでの表示名を入力。
データベース名 :データベース名はテナンシのリージョン内で一意となるように入力。



ワークロードタイプの選択 :ワークロードタイプを指定。今回はAutonomosu Data Warehouseを指定。
デプロイメントタイプの選択 :「共有インフラストラクチャ」を指定。
*Always Freeでは、相乗りでなくHWを専有利用する「専用インフラストラクチャ」利用不可。



データベースを構成します :Always Freeにチェックを入れる
*本来はOracle DBのVer、OCPUやストレージサイズを入力
*Always Freeでは、DB verの指定不可(19c)。OCPUとストレージサイズも固定。



管理者資格証明の作成 :DBインスタンスのAdminユーザのPWを入力。
*DBインスタンスログインの際は、このPWを利用してログインする



ネットワーク・アクセスの選択 :すべての場所からのセキュリティ・アクセスを選択
*Always Freeでは、「プライベート・エンドポイント・アクセス」は利用不可
*「許可されたIP及びVCN限定のセキュアアクセス」も選択可。各項目の概要は下記表のとおり。

【参考】ネットワーク・アクセスの選択_各項目内容

アクセス手法 エンドポイント 概要
すべての場所からの
セキュア・アクセス
Public EP アクセス元の制限なし。
(アクセスの際に後述するWallet+PW認証は必要)
許可されたIPおよび
VCN限定のセキュア・アクセス
Public EP アクセス元を指定する。NW ACLでの制御。
VCNの場合はアクセス可能なVCNに加えて、IPの指定も可能
プライベート・エンドポイント・アクセス Private EP 指定VCNからのトラフィックのみが許可される
VCN内にプライベートIPを持つEPを構成する


ライセンス・タイプの選択 :ライセンス込み
*Always Freeは無料リソースなので、BYOL不可
運用上の通知およびお知らせ用の連絡先を指定してください :通知先のメールアドレスを記載



[オプション]暗号化キー :Oracle管理キーを使用した暗号化
*KMSでなくHSMで管理したい場合は、「顧客管理キーを使用した暗号化」を選択

上記設定に間違いがなければ、「Autonomous Databaseの作成」を選択。

3. IAMリソースを作成

Autonomous DatabaseがObject Storageを操作するためには、後述するクレデンシャル(Credential)が必要となります。
クレデンシャル作成においてIAMユーザ情報が必要となるため、IAMリソース(ユーザ、ポリシー、グループ)を作成します。
*この手順は既存のAdmin権限等、Onject Storageを利用可能なユーザでも代替できます。


OCIコンソールへログインして、アイデンティティのコンソール画面へ移動し、ユーザを選択
「ユーザの作成」を選択。



IAMユーザを選択して、任意の名前、説明を入力して「作成」を選択



アイデンティティのコンソール画面へ移動し、グループを選択。
任意の名前を入力して「作成」を選択


アイデンティティのコンソール画面へ移動し、ポリシーを選択。
任意の名前を入力して、「ポリシー・ビルダー」にObject Storageへの管理権限を記載。
問題がなければ「作成」を選択。
*テナンシ指定で、Object Storageへmanage権限を付与する場合はルートコンパートメントに作成する必要があります。

Autonmous Databaseへ接続してみる

  1. Database Actionを利用した接続
  2. CloudShellを利用した接続

Database Actionを利用した接続

Database ActionはAutonmous Databaseの開発/データ・ツール/管理/監視機能を提供するGUIツールとなります。
本記事では開発機能の1つであるSQL(SQL Developer相当の機能)を使ってのADW操作について記載します。


Autonomous Databaseのコンソール画面より、「データベース・アクション」を選択



Database Action画面が開くので開発の「SQL」を選択



SQL Developerのような画面がひらくので、「ワークシート」にSQLを記載して
記載したSQLを指定して▶を選択して、実行。

CloudShellを利用した接続

Cloud ShellはOCIコンソールからアクセスできる、Webブラウザベースの端末です。
Webベースのインスタンス(VM)のようなイメージで、OCI CLIやsqlplus等、各種ツールが配備されている便利な端末です。
利用にあたって課金等発生しませんが、IAM Policy等でCloud Shellの利用が許可されている必要があります。
(本記事の操作はAdminアカウントで行っているので、ここはスキップ)


OCIコンソールのどの画面でもいいので、右上のCloudShell(「>_」のマーク)を選択。
OCIコンソール上にCloud Shellの起動を確認。



Autonomosu Databaseのページに移動して、「サービス・コンソール」を選択



左のメニューより「管理」を選択して、「クライアント資格証明(ウォレット)のダウンロード」を選択。



クライアント資格証明(ウォレット)のダウンロード画面で任意のPW(何でも大丈夫)を入力
「ダウンロード」を選択。クライアント端末のローカルにウォレットをダウンロード。



ダウンロードしたウォレットをドラックアンドドロップで、Cloud Shellへアップロード。


cloudshell:~ (ap-tokyo-1)$ export ORACLE_HOME=<ホームディレクトリ>
cloudshell:~ (ap-tokyo-1)$ mkdir -p network/admin
cloudshell:~ (ap-tokyo-1)$ mv <ウォレットファイル.zip> network/admin/
cloudshell:~ (ap-tokyo-1)$ unzip <ウォレットファイル.zip>
cloudshell:~ (ap-tokyo-1)$ ls -l
otal 64
-rw-r--r--. 1 user oci  6701 Jan  6 09:15 cwallet.sso
-rw-r--r--. 1 user oci  6656 Jan  6 09:15 ewallet.p12
-rw-r--r--. 1 user oci  3191 Jan  6 09:15 keystore.jks
-rw-r--r--. 1 user oci   691 Jan  6 09:15 ojdbc.properties
-rw-r--r--. 1 user oci  3187 Jan  6 09:15 README
-rw-r--r--. 1 user oci   114 Jan  6 09:15 sqlnet.ora
-rw-r--r--. 1 user oci  1131 Jan  6 09:15 tnsnames.ora
-rw-r--r--. 1 user oci  3378 Jan  6 09:15 truststore.jks
-rw-r--r--. 1 user oci 21630 Jan  6 09:18 <ウォレットファイル.zip>

ホームディレクトリ配下に「network/admin」ディレクトリを作成。
作成したディレクトリ配下へウォレットファイルを移動して解凍。
*ホームディレクトリを$ORACLE_HOMEとする場合の手順になります。
*Oracle DBを構築するときと同様に、tnsnames.ora等はデフォルトではsqlnet.oraの記載に従い
「$ORACLE_HOME/network/admin」配下へ格納する必要があります。


cloudshell:admin (ap-tokyo-1)$ cat tnsnames.ora 
testadw202201_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=g300782c4bdbc86_testadw202201_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com, OU=Oracle ADB TOKYO, O=Oracle Corporation, L=Redwood City, ST=California, C=US")))

testadw202201_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=g300782c4bdbc86_testadw202201_low.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com, OU=Oracle ADB TOKYO, O=Oracle Corporation, L=Redwood City, ST=California, C=US")))

testadw202201_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=g300782c4bdbc86_testadw202201_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com, OU=Oracle ADB TOKYO, O=Oracle Corporation, L=Redwood City, ST=California, C=US")))

tnsnames.oraを参照して、sqlplusで接続するためのサービス名を確認。
*ADWへの接続は「high」「medium」「low」の3種類が存在します。
 これはパラレル処理の違いとなります。(Highの方が並列度型が高い)


cloudshell:admin (ap-tokyo-1)$ sqlplus admin@testadw202201_low

SQL*Plus: Release 21.0.0.0.0 - Production on Thu Jan 6 09:41:40 2022
Version 21.4.0.0.0

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

Enter password: 

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.13.0.1.0

SQL> 
SQL> show parameter 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
DBFIPS_140                           boolean     FALSE
active_instance_count                integer
adg_account_info_tracking            string      LOCAL
.......

sqlplusでサービス名を指定して接続。本記事では一番多重度の低い「low」を選択。
*この時聞かれるPWはウォレットのPWでなく、Autonomosu Databaseを構築した際に指定した
 PWを利用してください。
*Database Actionでは"show parameter"等は実行できませんが、Cloud Shellは
 sqlplusを利用しているので、実行可能です。

Object StorageのデータをAutonomosu Databaseへロードしてみる

ここまでの内容で、Autonomous Databseの構築とアクセスが実現できたので
最後に、検証用データをObject StorageからAutonomous Databaseへロードする方法をご紹介します。

手順
1. 認証トークンの作成
2. クレデンシャルの作成
3. ロード先の空テーブルの作成
4. ロード元ファイルのURIを確認
5. Object Storageからテーブルへデータロード

1. 認証トークンの作成


IAMユーザのコンソール画面でユーザを選択。
その後、左下のメニューから「認証トークン」を選択して、「トークンの生成」を選択。
*生成後トークンのPWが表示されるの、必ずこれをメモしてください。

2. クレデンシャルの作成

Autonomous Database内でObject Storageアクセス用のクレデンシャルを作成します。
クレデンシャル の作成はDBMS_CLOUDパッケージを利用します。

BEGIN 
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'ObjectsStrageAccess', 
    username => 'ObjectsStrage',
    password => '7Ff0P;IHU)fQm#OWLG}A'
  );
END;
/ 

Autonomous Databaseへログインして、上記PL/SQLを実行する。
credential_name→任意のクレデンシャル名
username→トークンを生成したユーザ名
password→トークン生成時にメモしたPW

3. ロード先の空テーブルの作成

データのロード先のテーブルを作成します。
検証なので、すごいシンプルなテーブルです。ここはお好みで。

CREATE TABLE ADWTEST01 (
 ID INT,
 NAME VARCHAR2(64),
 ERIA VARCHAR2(64)
);  

4. ロード元ファイルのURIを確認

Object Storageに格納されたロード元ファイルのURIを確認します。

対象のファイルの右側の「:」から「オブジェクト詳細の表示」を選択すると
URIを確認することが可能です。

5. Object Storageからテーブルへデータロード

Object StorageにあるcsvファイルをAutonomous Databaseへロードします。
ここでもDBMS_CLOUDパッケージを利用します。

begin
    dbms_cloud.copy_data(
        table_name => 'ADWTEST01',
        credential_name => 'ObjectsStrageAccess',
        file_uri_list => 'https://objectstorage.ap-tokyo-1.oraclecloud.com/n/nrjtv8rp1wyr/b/OCITEST_202201/o/SAUNA.csv',
        format => json_object('type' value 'csv')
    );
end;
/

table_name :作成したテーブル名
credential_name :作成「したクレデンシャル名
file_uri_list :確認したObject Storage内ファイルのURI
format :ロード時の各種フォーマット指定。本記事ではcsv1行目の指定のみ。読み込みスキップやデータ型の指定等可能。

【参考】実行結果

SQL> select * from ADWTEST01;

        ID NAME                           ERIA
---------- ------------------------------ ------------------------------
         1 Hokkaido SAUNA                 Hokkaido
         2 SHIKIGI                        Shizuoka
         3 Welbee SAKAE                   Aichi
         4 MATUMOTOYU                     Tokyo
         5 MARUSINSUPA                    Tokyo
         6 OASISGOTEMBA                   Shizuoka
         7 YUIRU                          Kanagawa
         8 SKC                            Saitama

8 rows selected.

Autonmous DatabaseにObject Storageに格納されたcsvファイルのデータが読み込まれていることが確認できました。

おわりに

今回は無料枠内でAutonomous Databaseを構築して触ってみました。
OCIはAutonomous Databaseの他にもMySQL HeatWave等目玉機能がAlways Free対象となっているので
時間がありましたら触ってみていただけたらと思います。(自分ももう少し複雑な検証等試していきたいです。)