6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-01-07

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からのデータロード等

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

image.png

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を作成する
image.png
OCIコンソールへログインして、Autonomous Databaseのコンソール画面へ移動。
「Autonomosu Databaseの作成」を選択。

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


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


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


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


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

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

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

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


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

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

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

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

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

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

image.png

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

#Autonmous Databaseへ接続してみる

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

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

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

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

image.png
SQL Developerのような画面がひらくので、「ワークシート」にSQLを記載して
記載したSQLを指定して▶を選択して、実行。
###CloudShellを利用した接続
Cloud ShellはOCIコンソールからアクセスできる、Webブラウザベースの端末です。
Webベースのインスタンス(VM)のようなイメージで、OCI CLIやsqlplus等、各種ツールが配備されている便利な端末です。
利用にあたって課金等発生しませんが、IAM Policy等でCloud Shellの利用が許可されている必要があります。
(本記事の操作はAdminアカウントで行っているので、ここはスキップ)

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


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


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


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


image.png
ダウンロードしたウォレットをドラックアンドドロップで、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. 認証トークンの作成
image.png
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を確認します。
image.png
対象のファイルの右側の「:」から「オブジェクト詳細の表示」を選択すると
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対象となっているので
時間がありましたら触ってみていただけたらと思います。(自分ももう少し複雑な検証等試していきたいです。)

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?