OCI Database: データベース環境を作ってみた(再び)

2019年5月にOracle Cloud (OCI)でのDatabaseサービスを作成する[記事](https://qiita.com/o_nohike/items/66ebf23a5b9eb6b94ab8)を書きましたが、作成UIが変わり、いくつか新しい機能が盛り込まれました。そのため、改めてDatabaseサービス作成のステップを書いてみます(2020年1月現在)。

## 事前準備
* SSHアクセスに使用するSSHキーペア(公開鍵、秘密鍵)の用意
* データベース環境の配置先となる、VCN(Virtual Cloud Network)のサブネット(パブリック・サブネットあるいはプライベート・サブネット)
* 使用するコンパートメントの確認


## DBシステムの作成
DBシステムとは、Oracleデータベースがデプロイされた仮想マシンやベアメタルサーバーです。ユーザーが指定したCPUコア数やデータベースのエディション、バージョンで構成されます。
今回はOracle Database 19cを積んだ、仮想マシンのDBシステムを作成してみます。

まず、OCIコンソールの左上にあるメニューアイコンから、「ベア・メタル、VMおよびExadata」を選択します。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/2e881a4c-6930-8483-b47e-32f7f97acf54.jpeg">

DBシステムの画面が表示されます。使用するコンパートメントが適切なものか確認して「DBシステムの作成」をクリックします。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/26a42716-b971-20fd-049c-197fda046b21.jpeg">

DBシステムの作成画面が表示されます。DBシステムとデータベースの情報を入力します。

**1. DBシステム情報の入力**
まず、DBシステムの情報を入力します。
少し長いので、いくつか区切って見ていきます。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/b0897c05-3ee3-8aee-fc5c-a0bd5c31cdbd.jpeg">

**・コンパートメントの選択 :** DBシステムの所属するコンパートメントを選択します。
**・DBシステムの名前の指定 :** 作成するDBシステムの任意の名前を入力します。
**・可用性ドメインの選択 :** DBシステムを配置するアベイラビリティ・ドメインを選択します。リージョンによってアベイラビリティ・ドメインの数は異なります。東京リージョンは一つです。
**・シェイプ・タイプの選択 :** シェイプ・タイプを選択します。今回は仮想マシンを選択します。
**・シェイプの選択 :** 使用するシェイプを選択します。シェイプによってCPUコア数やメモリサイズが決まります。下は仮想マシンの現在提供されているシェイプです。

| シェイプ | CPUコア | メモリ |
|:-:|:-:|:-:|
|  VM.Standard2.1 |  1 |  15 GB |
|  VM.Standard2.2 |  2 |  30 GB |
|  VM.Standard2.4 |  4 |  60 GB |
|  VM.Standard2.8 |  8 |  120 GB |
|  VM.Standard2.16 | 16  |  240 GB |
|  VM.Standard2.24 | 24  |  320 GB |

ただし、「シェイプの変更」をクリックして表示されるシェイプは、利用している環境で使用可能なシェイプに連動するようです。
Oracle Cloudではサービス制限(Service Limits)という仕組みにより、デフォルトで使用できるサービスの数量に制限がかけられています。もちろん、リソースの数量を増やすリクエストができますので、必要に応じてサービス制限の画面からリクエストをします([詳細な解説がこちらにあります](https://blogs.oracle.com/otnjp/minamin-cloud-016-servicelimits))。

**・合計ノード数 :** シングルノードの環境を構成する場合は1, RACを構成する場合は2を選択します。今回は1のままです。
**・ORACLE DATABASEソフトウェア・エディション :** エディションを選択します。選択できるエディションは4種類あります。
　・Standard Edition
　・Enterprise Edition
　・Enterprise Edition High Performance
　・Enterprise Edition Extreme Performance
Oracle Cloudでは、データベースのオプションはこれらのエディションの中に含まれています。どのエディションにどのデータベース・オプションが含まれるかについては[Oracle CloudのFAQ](https://www.oracle.com/jp/database/database-management-cloud-faq.html)から確認できます(英語)。

(続き)
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/79bc7b00-c271-ae23-3410-2302f5bc90e0.jpeg">

**・ストレージ管理ソフトウェアの選択 :** Oracle Grid Infrastructure(ASMの使用)か、論理ボリューム・マネージャを選択します。以前はASMによるストレージ管理のみでしたが、現在は論理ボリュームマネージャによる管理が選択できるようになっています。ただし、RAC構成の時はASMのみの選択になります。詳細は[こちら](https://docs.oracle.com/cd/E97706_01/Content/Database/Concepts/overview.htm#fastprovisioning)
**・使用可能なストレージ(GB) :** データベースのデータ格納領域のサイズを指定します。
**・合計ストレージ(GB) :** 上記使用可能なストレージから自動計算されます。データ格納領域に加えてリカバリ関連ファイルやOracleソフトウェアの領域の合計になります。
**・公開SSHキーの追加 :** 事前準備で用意した公開鍵の登録をします。

(続き)
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/736cd1e0-ec15-1caf-9c69-6a7f247f6865.jpeg">

**・ライセンス・タイプの選択 :** ライセンスタイプを選択します。BYOLをしない場合は「含まれるライセンス」(LICENSE INCLUDED)を選択します。
**・仮想クラウド・ネットワーク 場所 :** 使用するVCNを選択します。
**・クライアントのサブネット 場所 :** DBシステムを配置するサブネットを選択します。
**・ホスト名接頭辞 :** DBシステムのホスト名。サブネット内で一意である必要があります。
**・Show Advanced Options :** フォルト・ドメインを指定する場合に使用します。フォルト・ドメインの詳細については[マニュアル](https://docs.oracle.com/cd/E97706_01/Content/General/Concepts/regions.htm#fault)を参照ください。

入力が終わったら「次」をクリック

**2. データベース情報の入力**
作成するデータベースの情報を入力します
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/463305c5-1a69-6a83-be7a-7181e0fed322.jpeg">

**・データベース名 :** データベース名を入力します。
**・データベース・バージョン :** データベースのバージョンを選択します。
**・PDB名 :** PDB名を入力します。
**・管理者資格証明の作成 :** データベース管理者のパスワード。SYS、SYSTEM、TDEウォレット、およびPDB Adminで使用されます。パスワードは9文字から30文字で、大文字、小文字、特殊文字および数字をそれぞれ2つ以上含める必要があります。特殊文字は_、#または-のいずれかとのこと。
**・自動バックアップの有効化 :** 自動バックアップを使用する場合はチェックを入れます。DBシステム作成後に有効化することも可能です。自動バックアップのバックアップ保持期間は7日/15日/30日/45日/60日間から選択できます。また自動バックアップの開始スケジュールを2時間単位のウィンドウで指定できるようになっています。
**・Show Advanced Options :** データベースのキャラクタセットを指定する場合に使用します。デフォルトはキャラクタセットはAL32UTF8です。SJIS等に変更する場合はここから設定します。

以上を入力し、「DBシステムの作成」をクリックするとDBシステムをプロビジョニングし始めます。アイコンが黄色(PROVISONING...)から緑(AVAILABLE)に変わるとプロビジョニング終了です。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/93c42f96-a841-bc39-caed-efc461f1ae27.jpeg"> プロビジョニング中..
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/7bd3db87-9152-4144-c879-b083850f2be7.jpeg"> プロビジョニング終了!

プロビジョニングの進行状況は「作業リクエスト」のリンクから確認することができます。

## DBシステムへの接続
作成したDBシステムに接続してみましょう。
**1. IPアドレスの確認**
DBシステムの詳細のページを表示します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/c0675b03-ea62-2ed4-23f9-0aca5a7eb649.jpeg">
今回、DBシステムを配置したサブネットにパブリック・サブネットを使用しました。そのため、DBシステムにはパブリックIPが割り当てられています。IPアドレスの確認には、詳細ページの左側にある「ノード」のリンクをクリックします。ノードの情報が表示され、パブリックIPアドレスも確認できます。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/7b792182-b8d9-6d03-295d-2e57ffe9f38e.jpeg">

**2. ターミナルから接続**
確認したIPアドレスを使って、ターミナルからDBシステムに接続します。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384729/61524eb3-1403-de55-1c3a-9679b5c38c23.jpeg">

**・ホスト :** パブリックIPを入力します。
**・TCPポート# :** 22
**・ユーザー名 :** opc (デフォルトでopcというユーザーが用意されています)
**・秘密鍵 :** DBシステム作成時に登録した公開鍵のペアとなる秘密鍵

接続が成功したらユーザーを切り替えます。rootにもなれます。
oracleユーザーに切り替えたら、早速SQL*Plusでつなげてみます。

```
[opc@test ~]$ sudo -s
[root@test opc]# su - oracle
[oracle@test ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 15 08:51:12 2020
Version 19.5.0.0.0

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


Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.5.0.0.0

SQL>
```

はい。DBシステムにログインし、データベースへの接続までできました。
仮想マシンのDBシステムでは作成時に ORACLE_SID や ORACLE_HOME、ORACLE_UNQNAME、PATHといった環境変数がセットされるので、地味に嬉しいですね。
tnsnames.oraファイルも作成されます。ただし、PDBへの接続文字列はセットされていないので、必要に応じて tnsnames.oraファイルを編集する必要があります。

## 参考

* マニュアル 「[ベア・メタルおよび仮想マシンのDBシステムの管理](https://docs.oracle.com/cd/E97706_01/Content/Database/Tasks/launchingDB.htm)」
* チュートリアル「[クラウドでOracle Databaseを使う - Oracle Cloud Infrastructureを使ってみよう(その8)](https://community.oracle.com/docs/DOC-1019568)」