[OCI] Database Cloud Service のプラガブル・データベース（PDB）がコンソールから管理操作できるようになったので試してみる


# はじめに

[PDB Management for Database Cloud Service](https://docs.oracle.com/iaas/releasenotes/services/database/)
Release Date: June 22, 2021
2021/6/22 にDatabase Cloud ServiceでOCIコンソールからPDB管理が利用できるようになりました。コンソールの画面上からPDBの起動・停止、クローンの作成、またPDBへの接続文字列も利用できるようになっているので確認して試してみます。

# コンソールからできること
- PDBを起動・停止、クローニングおよび削除
- データベースに追加のPDBを作成
- [作業リクエスト] を使用してすべてのPDB操作を監視

# 制限事項
- Oracle Database 19c以上のデータベースのみサポート
- CDBレベルでバックアップ(すべてのPDBが含まれる。個々のPDBバックアップは非サポート)
- リストア操作はCDBレベルで実行

さらに詳細の制限事項については、巻末の参考URLもご覧ください。

# お試し環境 
- プライベート・サブネットに Database Cloud Service を構築します。
- **Oracle 19c からは、すべてのEdition(Standard Edition含)でコンテナデータベース(CDB)1つにつき最大3つのプラガブルデータベース(PDB)を利用可能とのことで、19c Standard Edition で試します。**
  - バージョン： **Oracle Database 19c** 
  - エディション：**Standard Edition**
- 踏み台サーバー経由で、Oracle DB / PDB に接続確認をします。
![image-20210906113056885.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/203b2155-3e4c-b0fb-0f8d-03476dd497db.png)

#  データベースの作成
OCIにサインイン後、左上のナビゲーションメニューから[Oracle Database]-[ベア・メタル、VMおよびExadata]を選択し、**DBシステムの作成** をクリックします。

作成に必要な情報を入力していきます。
![image-20210906142853955.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/634737b1-8b15-b9eb-9a62-dd1df0ef26fa.png)
**[コンパートメントに作成]** 任意のコンパートメントを指定します。
**[DBシステムの名前の指定]** 任意の名前を指定します。例）DB#02
**[可用性ドメイン]** AD-1 のまま
**[シェイプ・タイプの選択]** 仮想マシンを選択
**[シェイプの選択]** テストなので、VM.Standard.1 を選択

![image-20210906143006749.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/c1aa7b85-a78e-8604-2764-e0333cd6d59c.png)
続けて、
[DBシステムの構成]
**[合計ノード数]** 単体ノードにPDB環境を用意するので、ノード数は **1** とします。
**[Oracle Database ソフトウェア・エディション]** **Standard Edition** を選択します。
**[Oracle Grid Infrastructure]** を選択
[ストレージの構成]
**[使用可能なストレージ(GB)]** テスト環境なので、256GB を選択

![image-20210906143107693.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/1c063a38-3048-b6a8-a2b0-535823d46a14.png)
**[SSHキーの追加]** 公開キーをアップロードしました。
**[含まれるライセンス]** を選択

![image-20210906143231004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/2dc9be53-4934-c16a-081f-7a10494d5795.png)
[ネットワーク情報の指定]
**[仮想クラウド・ネットワーク]** 既存の仮想クラウド・ネットワークを選択。例）osaka-vcn
**[サブネット]** プライベート・サブネットを選択します。
**[ホスト名接頭語]** 例) SA としました。

![image-20210906143432894.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/7063c7f7-aa80-c1c1-f9e3-80472bde7e4c.png)
**[データベース名]** 例）DB0901 としました。
**[一意のデータベース名の接頭語]** 例）PDBT としました。
**[データベース・イメージ]** **Oracle Database 19c** を選択
[管理者資格証明の作成]
**[パスワード]** sys のパスワードを指定します。 

![image-20210906143527667.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/2ff4c8f8-0c7f-2a9c-8ec3-7298d4b00c3b.png)
[データベース・バックアップの構成]
**[自動バックアップの有効化]** 有効化のまま。他の設定もデフォルトのままとします。
**作成** ボタンをクリックして、データベースを作成します。

![image-20210906143744837.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/dcaccf40-3bce-381c-d4bb-6c61cb9811f7.png)
しばらくすると、**19c Standard Edition** のデータベース・インスタンスが作成されました。

# PDBの確認
ページ左下のリソースにて、**データベース**をクリックして、データベースのコンソールを表示します。
![image-20210906144519244.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/3840a036-78aa-535e-3b57-99450b2a431d.png)
リソースの**プラガブル・データベース**をクリックすると、PDBが１つ作成されていることがわかります。
![image-20210916154126473.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/ec297967-7809-e401-d8dd-b0f363c541ff.png)
続けてクリックして、PDBのコンソールを開きます。
![image-20210906144648359.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/25d928f1-e0f8-d524-bfb7-39604b6cdd6c.png)
コンソール上部には、いくつかのボタンが表示されておりここからPDBの操作ができるようです。
**[PDB接続]**  PDBに接続するための**接続文字列**を取得できます。
**[クローン]** 同じデータベース(CDB)内にPDBの**クローン**を作成できます。
**[起動]** PDBを**起動**できます。
**[停止]** PDBを**停止**できます。

# コンソールからPDBを追加
**クローン** から追加のPDBを作成します。**クローン** をクリックしPDBクローニングを実行します。
![image-20210906144815282.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/cf1b6d3c-57a5-0bc2-5323-4af780a16cf7.png)
**[PDB名]** 例）pdb2 としました。
各パスワード設定項目にパスワードを入力します。
**PDBのクローニング** をクリックし、新たなPDBを作成します。

しばらくすると、pdb2が**使用可能**となりました。
![image-20210906145015866.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/d6ba0bc7-c62a-2702-5c0c-5b8c146850a8.png)
このとき、リソースの**プラガブル・データベース**に追加されたPDBも表示されます。
![image-20210906145234172.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/6f2d0c89-2178-5783-e2ef-cf03ad6835d2.png)
同じ動作を繰り返すことで、次のように３つPDBを作成できました。
![image-20210906145428010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/5e225feb-625b-c46e-e38d-fd1add6c8fa6.png)

# 接続文字列を使ってPDBへ接続
コンソールからPDBを作成できることが確認できたので、コンソールから**接続文字列** を取得して、PDBへの接続を試みます。

## Oracle DB に接続
踏み台サーバーに接続後、Oracle Database のOSにSSHで接続します。以下のDNS名は、[DBシステム] - リソースの[ノード]の表示リストから取得できます。

```
[opc@bastion01 ~]$ ssh -i ~/.ssh/id_rsa opc@sa.sub03060550521.osakavcn.oraclevcn.com
```

Oracle Database の OSに接続後、ユーザーをoracleに変更し、sqlplus を実行します。

```
[opc@sa ~]$ sudo su - oracle
[oracle@sa ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 16 07:41:24 2021
Version 19.11.0.0.0

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


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

SQL>
```

コンソールから作成されたPDBを確認します。showコマンドでも３つのPDBが作成されていることが確認できました。

```
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DB0901_PDB1                    READ WRITE NO
         4 PDB2                           READ WRITE NO
         5 PDB3                           READ WRITE NO
```



**接続文字列**を使ってPDBに接続する準備として、接続するPDBにスキーマを作成しておきます。

```
SQL> alter session set container = DB0901_PDB1 ;
Session altered.
SQL> create user DBUSER1 identified by WelCome_#01 ;
User created.
SQL> grant CREATE SESSION, CONNECT,RESOURCE,UNLIMITED TABLESPACE to DBUSER1 ;
Grant succeeded.
```



## 接続文字列でPDBに接続
DB0901_PDB の **[PDB接続]**をクリックして、**接続文字列**を取得します。簡易接続の**接続文字列**をコピーします。
![image-20210910151748322.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/b4f6f822-d9cc-4ca6-1943-22bcd44996bd.png)
次のような**接続文字列**が取得できました。

```
sa.sub03060550521.osakavcn.oraclevcn.com:1521/DB0901_pdb1.sub03060550521.osakavcn.oraclevcn.com
```

この接続文字列とユーザー名/パスワードを使って、Oracle Database の OSからDB0901_PDBへ接続してみます。

```
[oracle@sa ~]$ sqlplus dbuser1/WelCome_#01@sa.sub03060550521.osakavcn.oraclevcn.com:1521/DB0901_pdb1.sub03060550521.osakavcn.oraclevcn.com

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 16 08:11:24 2021
Version 19.11.0.0.0

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

Last Successful login time: Fri Sep 10 2021 06:08:36 +00:00

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

SQL>
```

コンソールから取得した**接続文字列** を使って、無事PDBに接続することができました。

# 参考URL
[101: Oracle Cloud で Oracle Database を使おう(DBCS)](https://oracle-japan.github.io/ocitutorials/database/dbcs101-create-db/)
[102: DBCS上のPDBを管理しよう](https://oracle-japan.github.io/ocitutorials/database/dbcs102-managing-pdb/)
[プラガブル・データベースの操作](https://docs.oracle.com/ja-jp/iaas/Content/Database/Tasks/pluggable_database_operations.htm)