Amazon RDS Custom for Oracle作成の手引き（その３：RDS Customの作成）


#はじめに 
RDS Custom for Oracleを作成するための準備として、[CEVの作成](https://qiita.com/asahide/items/f7a1822b039add53d27e)と[IAM等の事前準備](https://qiita.com/asahide/items/a93a9836e754b58997cc)を紹介してきました。
今回はいよいよRDS Custom for Oracleの作成に入ります。
準備自体は一回実施すればよいので、RDSのプロビジョニングという意味では今回の手順のみで実行可能です。

#RDS作成の流れ

CEV作成からRDS作成のイメージは以下になります。
事前準備ができている状況、という前提で②が今回の範囲になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/00b3c695-27eb-a07d-bbd5-c4b65f878ad2.png)

([Amazon RDS Custom for Oracle – New Control Capabilities in Database Environment](https://aws.amazon.com/jp/blogs/aws/amazon-rds-custom-for-oracle-new-control-capabilities-in-database-environment/))


#RDS Custom for Oracleの作成

RDSの作成から以下を選択していきます。

- 標準作成(簡単に作成、だとCustomの選択肢は出てきません)
- Oracle
- Amazon RDS Custom
- Oracle Enterprise Edition（現時点では他のEditionは選択できません）
- カスタムエンジンバージョン（事前に作成してあるカスタムエンジンバージョンが選択できます）


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/4436fe2f-7c44-9b2b-f007-45163886f4e3.png)

- テンプレート

テンプレートは「本番稼働用」と「開発/テスト」が選択できますが、どちらを選択してもいくつかのデフォルト選択肢が変わるだけなので、どちらを選んでも構わないです。（ストレージが io1 か gp2 か、と、削除保護が有効になっているかどうか、の二点）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/816ae8a0-de63-03c1-8e2a-8f152edf7a6b.png)

- DBインスタンス識別子
- 認証情報(マスターユーザ名/パスワード、RDSの時には重要でしたが、RDS CustomですとOSにrootログインできるため、/ as sysdba接続も可能となり、あまり重要ではなくなりました)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/b34fc8d8-9b79-375e-1472-ee6f78beceb3.png)


- DBインスタンスクラス（m5、r5インスタンスのlarge(2VCPU) ～ 24xlarge(48VCPU)が選択可能）
- ストレージ（gp2、io1が選択可能）
- ストレージ割当（40GiB～65,536GiB）
- プロビジョンドIOPS（io1のみ選択可能、1,000IOPS～40,000IOPS）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/817206b1-4e72-902d-e532-9d93c7369825.png)

- Virtual Private Cloud (作成する対象のVPCを選択）
- サブネットグループ（事前に作成してあるサブネットグループが選択可能）
- パブリックアクセス（VPC外部から接続したい場合には「あり」だが、そうでない場合には「なし」になる）
- VPCセキュリティグループ（既存のセキュリティグループを利用するか、新規に作成するか）
- 既存のVPCセキュリティグループ（RDSに適用したいセキュリティグループを選択する）
- アベイラビリティゾーン（サブネットグループに入っているAZが選択可能）
- データベースポート（DBへ接続するためのポート、デフォルトは1521だが後でも変更可能）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/fc060b12-c786-6225-0c51-72e3ef2c9b72.png)

- インスタンスプロファイル　(AWSRDSCustomで始まる必要がある、事前準備にて作成済)
- AWS KMS キー（インスタンスストレージ等の暗号化キー、CEV作成時のキーと同じである必要はない）
- RDSカスタムオートメーションモード（「完全なオートメーションモード」のみが選択可能）


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/3d86dabd-b02d-737f-494a-743d47288f3e.png)

- 最初のデータベース名（DB名）
- バックアップ保持期間（通常のRDSと同様、1～35日で設定可能です）
- バックアップウィンドウ（選択ウィンドウにすると、バックアップウィンドウを設定できます）
- メンテナンスウィンドウ（選択ウィンドウにすると、メンテナンスウィンドウを設定できます、Customでは基本的にはユーザ側でメンテナンスを選択できるため、大きな意味はないと認識してます）
- 削除保護（「削除保護の有効化」チェックボックスをオンにすると、削除保護がEnableになります）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/c1123ef2-de9e-deb0-6099-ba0e5ff936ce.png)

###作成されたRDS Custom for Oracle

上記の手順を実施すると、画面がダッシュボードに切り替わり、該当のデータベースが「作成中」となります。
ちなみにRDS for OracleとRDS Custom for Oracleを標準構成で同時に作成したところ、RDS for Oracleは10分弱で作成できたのに対し、RDS Custom for Oracleは20分弱かかりました。（ストレージサイズが標準でそれぞれ20GB、40GBです）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/c00e0404-7cac-7591-57ab-75d7e6a40f4f.png)

####RDS Customへの接続
以下の③に相当するRDSへの接続については、「1. OSへのログイン」、「2. DBへのログイン」が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/183ded00-aa72-bf03-4d12-2d26668446f9.png)


1. OSへのログイン

OSへのログインは幾つか手法があり、代表的なものはSSHでの接続か、SSMを利用した接続になります。

- SSHでの接続
    [Connecting to your RDS Custom DB instance using SSH](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.ssh)

- SSMでの接続
    [Connecting to your RDS Custom DB instance using AWS Systems Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.ssm)

今回は例としてSSMでの接続を載せておきます。

- RDSのダッシュボードの「設定」でリソースIDを確認します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/4fe778d9-f5ac-e974-7b4d-bdbc2e550205.png)

- 該当のリソースIDを持つインスタンスをEC2のダッシュボードで確認し、詳細から「接続」を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/825246c2-aa18-bcfb-d754-9911e4f77768.png)

- インスタンスに接続 画面がでるので、セッションマネージャタブ→「接続」を押下すると、ssm-userとしてセッションが開始されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/073ea4b5-e987-3319-5661-374fc246e981.png)

```
[ssm-user@ip-xx-xx-xx-xx ~]$ whoami
ssm-user
[ssm-user@ip-xx-xx-xx-xx ~]$
[ssm-user@ip-xx-xx-xx-xx ~]$
[ssm-user@ip-xx-xx-xx-xx ~]$ cat /etc/oracle-release
Oracle Linux Server release 7.9
[ssm-user@ip-xx-xx-xx-xx ~]$
[ssm-user@ip-xx-xx-xx-xx ~]$
[ssm-user@ip-xx-xx-xx-xx ~]$ uname -a
Linux ip-xx-xx-xx-xx 4.14.35-2025.404.1.2.el7uek.x86_64 #2 SMP Wed Jan 27 20:30:12 PST 2021 x86_64 x86_64 x86_64 GNU/Linux
[ssm-user@ip-xx-xx-xx-xx ~]$
[ssm-user@ip-xx-xx-xx-xx ~]$
```
 

2. DBへのログイン

OSに直接接続できれば、rdsdbユーザというDB管理ユーザにスイッチすることでsysdba接続が可能です。
外部から接続したい場合には、sqlplusでRDS作成時に設定したadminユーザでsysdba接続が可能です。

```
ssm-user@ip-xx-xx-xx-xx ~]$ sudo su -
Last login: Wed Dec  8 13:45:48 UTC 2021 on pts/1
[root@ip-xx-xx-xx-xx ~]#
[root@ip-xx-xx-xx-xx ~]#
[root@ip-xx-xx-xx-xx ~]# su - rdsdb
Last login: Wed Dec  8 13:45:53 UTC 2021 on pts/1
-bash-4.2$
-bash-4.2$
-bash-4.2$ sqlplus '/as sysdba'

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Dec 8 13:46:39 2021
Version 19.13.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.13.0.0.0

SQL> set pages 2000 lines 200
SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME    HOST_NAME                                                        VERSION           VERSION_LEGACY    VERSION_FULL      STARTUP_T STATUS       PAR    THREAD# ARCHIVE
--------------- ---------------- ---------------------------------------------------------------- ----------------- ----------------- ----------------- --------- ------------ --- ---------- -------
LOG_SWITCH_WAIT LOGINS     SHU DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST BLO     CON_ID INSTANCE_MO EDITION FAMILY
--------------- ---------- --- ----------------- ------------------ --------- --- ---------- ----------- ------- --------------------------------------------------------------------------------
DATABASE_TYPE
---------------
              1 ORCL             ip-xx-xx-xx-xx                                                   19.0.0.0.0        19.0.0.0.0        19.13.0.0.0       08-DEC-21 OPEN         NO           1 STARTED
                ALLOWED    NO  ACTIVE            PRIMARY_INSTANCE   NORMAL    NO           0 REGULAR     EE
SINGLE


SQL>
SQL>
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.13.0.0.0
-bash-4.2$
-bash-4.2$
-bash-4.2$ sqlplus admin@database-1.cfqmcab0opri.ap-northeast-1.rds.amazonaws.com:1521/ORCL

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Dec 8 13:47:36 2021
Version 19.13.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.0.0

SQL>
SQL> set pages 2000 lines 200
SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME    HOST_NAME                                                        VERSION           VERSION_LEGACY    VERSION_FULL      STARTUP_T STATUS       PAR    THREAD# ARCHIVE
--------------- ---------------- ---------------------------------------------------------------- ----------------- ----------------- ----------------- --------- ------------ --- ---------- -------
LOG_SWITCH_WAIT LOGINS     SHU DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST BLO     CON_ID INSTANCE_MO EDITION FAMILY
--------------- ---------- --- ----------------- ------------------ --------- --- ---------- ----------- ------- --------------------------------------------------------------------------------
DATABASE_TYPE
---------------
              1 ORCL             ip-xx-xx-xx-xx                                                   19.0.0.0.0        19.0.0.0.0        19.13.0.0.0       08-DEC-21 OPEN         NO           1 STARTED
                ALLOWED    NO  ACTIVE            PRIMARY_INSTANCE   NORMAL    NO           0 REGULAR     EE
SINGLE


SQL>
```


#まとめ

事前準備はある程度時間が必要ですが、事前準備ができていればRDS Custom for Oracleのプロビジョニングは30分程度で可能です。
EC2上のOracle Databaseを構築するのはOSのセットアップから開始すると数日かかりますので、大幅に時間短縮は可能になり、RDSとしてのメリットを享受することができます。
一方、作成時に指定することが出来なかったパラメータ、例えば文字コードを確認すると`US7ASCII`となっており、サポートにも確認しましたが現時点では変更することはできない制限となっているとの事でした。

如何でしたでしょうか？
まだ採用にはハードルが高いと思いますが、SQL ServerのRDS Customも発表されており、今後改善はされていくと思います。
別途OSの初期状態やDBの初期状態はレポートしていきたいと思いますので、よろしくお願いします。

```
SQL>
SQL> SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';

VALUE
----------------------------------------------------------------
US7ASCII

SQL>
```