空谷に吼える

ブロックチェーン/DLTまわりのなにかしらを書いていく所存

Oracle CloudでOBCSのリッチヒストリーDB連携用のOCI Database作成してみた

本日はふとんから出ずにインスタンスを作成する、ブログを書く、出前を注文するなどしています

やったこと

内容

Oracle Cloud Advent Calender 2018の16日目のやつとしてOracle Blockchain Cloud ServiceのリッチヒストリーDB連携のエントリ書こうと思ったんだけど、なんか書いてたら長すぎるので事前準備編を別エントリとして書くことにしました、そしてこのエントリがその事前準備編その2です。その1はこちら

リッチヒストリーDB機能のDB要件

このエントリではOracle Blockchain Cloud Service(OBCS)のリッチヒストリー連携機能で使うためのDBを用意します。わたしがDBあまり詳しくないのと、機能をちょっと試せればいいやという程度なのでDBの作成方法はわりとてきとうです、ご容赦ください

OBCSの公式ドキュメントの説明を読むと、リッチヒストリーDB連携にはOCIベースの Autonomous Data WarehouseかDatabase Cloud Serviceかどっちかが必要だそうです。

You can only use an Oracle database such as Oracle Autonomous Data Warehouse or Oracle Database Cloud Service with Oracle Cloud Infrastructure to create your rich history database.

Create the Rich History Database

今回はリッチヒストリーDB機能をちょっと試したいだけなので、できるだけ課金を抑えたいということでDatabaseのほうを選択することにします。というわけでやっていきましょう

Databaseインスタンス作成の事前準備

コンパートメント作成

Databaseを置く用のコンパートメントを作っておきましょう。すでにあるよって場合はすきっぷすきっぷ

OCIのメニューバーからIdentity > Compartmentsをクリック

f:id:gakumura:20181215164224p:plain

コンパートメント一覧画面でCreate Compartmentを押下すると↓のフォームが開くので任意のコンパートメント名とその説明を記載してCreateします

f:id:gakumura:20181215164610p:plain

できました

f:id:gakumura:20181215164753p:plain

VCN作成

↓の記事を参考にDatabaseを所属させる用のVCN(Virtual Cloud Network)を、先ほどのコンパートメントに作成します。これももうあるよって場合はスキップ可

community.oracle.com

SSH鍵作成

Databaseインスタンスを作成する際にSSHの公開鍵をアップロードする必要があるので作っておきましょう。わたしは↓を参考にTeratermで作りました

公開鍵認証によるSSH接続 - Tera Termの使い方 - Linux入門 - Webkaru

Databaseインスタンス作成

OCIのメニューバーからBaremetal, VM, and Exadataをクリック

f:id:gakumura:20181215170527p:plain

また、Oracle Cloudのメニューバーから行く場合はDatabaseというのを選びます、Database Classicというのもあるんですがそっちではないです

そうするとこういう画面に出るのでさっき作ったコンパートメントを選択したのち、Launch DB Systemをクリックしましょう

f:id:gakumura:20181215171028p:plain

構成フォームが出ます。ここでは必須の情報だけ入れていきます

f:id:gakumura:20181215194611p:plain

  • DB System Information:
    • Display Name: データベースの表示名。任意につきましょう
    • Availability Domain: データベースをどこに構築するか。任意に選びましょう
    • Shape Type: ここではちょっと試したいだけなので、一番料金が安いVirtual Machineにしておきます
    • Shape: 同じく安そうなVM.Standard 2.1にしておきます
    • Database Software Edition: 同じくStandard Editionにしておきます
    • Storage Size: 同じく256GBを選んでおきます
    • SSH Public Key: 先ほど作成しておいた公開鍵をアップロードします
  • Network Information:
    • Virtual Cloud Network: 先ほど作成したVCNを選択しましょう
    • Client Subnet: 先ほど作成したVCNのサブネットを選択しましょう
  • Database Information:
    • Database Name: データベース名です、任意の名前を入れましょう
    • Database Version: 任意のバージョンを選択しましょう。特にバージョン要件ないのでここでは最新の18.2.0.0を選択しておきます
    • Admin Password: DBAのパスワードです。どこかに控えておきましょう

上記を適切に埋めたあとにフォームの一番下のLaunch DB Systemsを押すと作成が始まり↓のような状況になります。待ちましょう

f:id:gakumura:20181215195812p:plain

Databaseへの接続およびユーザーの作成

1521番ポートへの設定を許可する

OBCS側からのリッチヒストリーDB連携の際のアクセス、また、SQLDeveloperで設定などを行う際の接続にも1521番ポートへの通信が必要になります。Databaseインスタンスの作成を待っている間に、↓の記事を参考に、Databaseインスタンスを作成したVCNのセキュリティ・リストでTCP:1521への接続を許可しておきましょう。

chiroito.hatenablog.jp

DBへの接続&リッチヒストリー連携用のユーザーの作成

しばらく待っているうちに(40分~2時間程度?)Databaseができあがったと思います。↓の画面(DB Systems一覧)でアイコンが緑色になっています。Public IPも振られています。

f:id:gakumura:20181215234836p:plain

Database System名をクリックすると↓のDB System詳細画面が表示されます。Host Domain NameとDatabase Unique Nameをチェック。

f:id:gakumura:20181215235413p:plain

リッチヒストリーDB連携機能を使うと、OBCSが自動で専用のテーブルを作成します。SYSスキーマにテーブル作るのもナンなので、リッチヒストリーDB連携機能用に専用のDBユーザーを作っておきましょう。

先ほど1521番ポートへの接続を許可しているので、SQLDeveloperで接続しに行きましょう。接続に必要な情報は上記のOCIのDatabaseコンソール画面で確認できます。

f:id:gakumura:20181216001558p:plain

  • ユーザー名: sys as sysdba
  • パスワード: 作成時に指定したDBAのパスワード
  • ホスト名: DB SystemのPublic IP(DB Systems一覧画面に表示)
  • ポート番号: 1521
  • サービス名: Database Unique Name(DB System詳細画面のDatabasesコーナーに表示)とHost Domain Name(DB System詳細画面に表示)を結合したもの。例:fugadb_xxxxx.subnetXXXXX.fugavcn.oraclevcn.com

わかんなかったら公式のガイドも↓にあります

Connecting to a DB System

接続できたらあとはユーザーを作るだけです。ただしDatabaseのバージョンが12.x以降の場合、上記のService nameでつながるのはContainer DBのほうです。Container DBに一般ユーザー作れないので、PDBに作りましょう。

Databaseインスタンス作成の際にPDB名を指定していればその名前で、指定していなければデフォルトでfugadb_pdb1のようにDatabase名+_pdb1といったかたちの名前でPDBがひとつ作られています。Service nameのDatabase Unique Name部分をこのPDB名に変更して、PDBにつなぎなおしましょう。DBAのパスワードはContainer DBと同じで、つまりDatabaseインスタンス作成の際に指定したものです。

PDBにつながったらユーザーを作りましょう。SQLDeveloperから「他のユーザー」で右クリック > ユーザーの作成

f:id:gakumura:20181216000434p:plain

ユーザー名は任意ですが、ここではobcsにしておきます。デフォルト表領域はUSERS、一時表領域はTEMPにしておきます。

f:id:gakumura:20181216000607p:plain

付与されたロールのタブではCONNECTRESOURCEに権限付与しておきましょう。

f:id:gakumura:20181216000729p:plain

// 2019/3/29追記 割当て容量タブを選択し、USERS表領域の割当てを無制限に設定しておきましょう

適用を押すとユーザーが作成されます、これで終わりです、よかったですね

PDBとかよくわかんないよって方は↓の連載を読むとわかります。わたしもよくわかんなかったが読んだらできたのでだいじょうぶです

第1回 プラガブル・データベースの作成