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へ接続してみる
- Database Actionを利用した接続
- 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へロードする方法をご紹介します。
手順
- 認証トークンの作成
- クレデンシャルの作成
- ロード先の空テーブルの作成
- ロード元ファイルのURIを確認
- 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対象となっているので
時間がありましたら触ってみていただけたらと思います。(自分ももう少し複雑な検証等試していきたいです。)