LoginSignup
7
2

More than 1 year has passed since last update.

RDS Custom for Oracle, RDS for Oracle, Oracle On EC2 の比較 [JPOUG Advent Calendar 2021]

Posted at

JPOUG Advent Calendar 2021 の5日目のエントリーです。
前の記事は yoshikaw さんのOracle Database Express Edition(XE)で21c新機能を試してみるでした。

はじめに

Amazon RDS Custom for Oracleは、10/26に発表されたRDSの新しい形態であり、RDSにもかかわらずOSレイヤへのrootアクセスが可能になります。
また、12/2のre:Inventにおいて、Amazon RDS Custom for SQL Serverが発表されており、力を入れているのが分かります。
Amazon RDSはフルマネージド型のサービスで使い勝手がよかった一方、メンテナンスタイミングや個別パッチの適用においては柔軟性に欠ける点もあり、エンタープライズ・プロジェクトでの利用には二の足を踏んでしまう事も多かったように思います。
RDS Customという形態は、個別パッチ等の適用が可能となることがメリットとなると思われますが、一方でrootアクセスを行えるという事はOS環境もユーザが管理していく必要があり、フルマネージドのメリットが損なわれると考えてます。
どのようなメリット・デメリットがあるのかをそれぞれ比較することで、今後のAWS上のOracle Databaseの選定の一助になればと考えてます。
なお、文中では単にRDSと記載した場合にはCustomではないRDS、RDS Customと記載した場合にはRDS Customを指してます(基本的には両方ともfor Oracleになります)。

RDS Custom for Oracleの概要

今までのRDSは基本的にAWSのフルマネージド型でOSレイヤへアクセスができなかったのに対し、Custom for OracleではOSレイヤへのrootアクセスも可能となっています。
RDS Customではフルではないがマネージドを実現するために、提供されるOSにはSSM Agentがインストールされており、基本的にはSSM Agentを経由してマネージドな機能が提供されます。
Oracle on EC2との違いとしては、公式では以下のように説明されています。

責任分担モデル

特徴 Oracle On
Amazon EC2
Amazon RDS
for Oracle
Amazon RDS
Custom for Oracle
アプリケーションの最適化 Customer Customer Customer
スケーリング Customer AWS Shared
高可用性 Customer AWS Shared
DBのバックアップ Customer AWS Shared
DBのパッチ適用 Customer AWS Shared
DBのインストール Customer AWS Shared
OSのパッチ適用 Customer AWS Shared
OSのインストール Customer AWS Shared
サーバのメンテナンス AWS AWS AWS
ハードウェアのライフサイクル AWS AWS AWS
電力、ネットワーク、および冷却 AWS AWS AWS

RDS for OracleとOracle On EC2の比較は Classmethodさんの [2018年版] RDS for Oracle と Oracle on EC2 の比較 で実施されてますので、同じ切り口でRDS Custom for Oracleも比較してみます。

比較ポイント

  • エディションとバージョン
  • 利用料金
  • 利用できるリソース
  • 機能差
  • 構築/運用

RDSで利用できるエディションとバージョン

RDS Custom、RDSで利用できるエディションとバージョンは以下のような組み合わせになります。
現時点(2021/12/5)ではRDSとしてはOracleの12.1.0.2(~2022/7/31)や12.2.0.1(~2022/3/31)も利用できますが、サポート切れまで一年もないので割愛します。基本的には19cのみが利用可能となります。19c のRDSとしてのサポート期限は明示されてませんが、Oracle Databaseとしての期限は現時点では 2027/4/30 となります。

Oracleのエディション、バージョン Oracle On
Amazon EC2
Amazon RDS
for Oracle
Amazon RDS
Custom for Oracle
Enterprise Edition(BYOL) 19c
Standard Edition2(BYOL) 19c ×
Standard Edition2(ライセンス込み) 19c ×

利用料金

2021年12月のインスタンス利用料金になります。

  • 料金は以下の条件
    • 東京リージョンの1時間あたりのオンデマンド利用料金
    • EC2はRHEL(Red Hat Enterprise Linux)を対象とします(参考記事同様&やはり利用が多いと思うので)
    • EC2はほかのインスタンスタイプも利用可能です
    • RDSはシングルAZ(マルチAZの場合には概ね2倍です、RDS CustomはマルチAZには現時点では非対応です1
    • RDS単価(SE2)はライセンス込みの価格です
    • 利用料「-」のインスタンスタイプは提供されてません

同じBYOLでもRDSに比べるとRDS Customの方が1-2割程度、高額で設定されてます。

インスタンスタイプ コアカウント VCPU メモリ(GiB) Oracle On
Amazon EC2
EC2単価 RHEL
Amazon RDS
for Oracle単価(BYOL)
Amazon RDS
for Oracle単価(SE2ライセンス込み)
Amazon RDS
Custom for Oracle単価(BYOL)
t3.micro 1 2 1 0.0736$ 0.026$ 0.044$ -
t3.small 1 2 2 0.0872$ 0.052$ 0.088$ -
t3.medium 1 2 4 0.1144$ 0.104$ 0.176$ -
t3.large 1 2 8 0.1688$ 0.104$ 0.352$ -
t3.xlarge 2 4 16 0.2776$ 0.416$ 0.704$ -
t3.2xlarge 4 8 32 0.5652$ 0.832$ 1.408$ -
m5.large 1 2 8 0.184$ 0.235$ 0.514$ 0.282$
m5.xlarge 2 4 16 0.308$ 0.47$ 1.028$ 0.564$
m5.2xlarge 4 8 32 0.626$ 0.94$ 2.056$ 1.128$
m5.4xlarge 8 16 64 1.122$ 1.88$ 4.112$ 2.256$
m5.8xlarge 16 32 128 2.114$ 3.76$ - 4.512$
m5.12xlarge 24 48 192 3.106$ 5.64$ - 6.768$
m5.16xlarge 32 64 256 4.098$ 7.52$ - 9.024$
m5.24xlarge 48 96 384 6.082$ 11.28$ - 13.536$
r5.large 1 2 16 0.212$ 0.277$ 0.556$ 0.332$
r5.xlarge 2 4 32 0.364$ 0.554$ 1.112$ 0.665$
r5.2xlarge 4 8 64 0.738$ 1.108$ 2.224$ 1.33$
r5.4xlarge 8 16 128 1.346$ 2.216$ 4.448$ 2.659$
r5.8xlarge 16 32 256 2.562$ 4.432$ - 5.318$
r5.12xlarge 24 48 384 3.778$ 6.648$ - 7.978$
r5.16xlarge 32 64 512 4.994$ 8.864$ - 10.637$
r5.24xlarge 48 96 768 7.426$ 13.296$ - 15.955$
r5b.large 1 2 16 0.241$ 0.335$ - -
r5b.xlarge 2 4 32 0.422$ 0.67$ - -
r5b.2xlarge 4 8 64 0.854$ 1.339$ - -
r5b.4xlarge 8 16 128 1.578$ 2.679$ - -
r5b.8xlarge 16 32 256 3.026$ 5.358$ - -
r5b.12xlarge 24 48 384 4.474$ 8.037$ - -
r5b.16xlarge 32 64 512 5.922$ 10.715$ - -
r5b.24xlarge 48 96 768 8.818$ 16.073$ - -
z1d.large 1 2 16 0.287$ 0.417$ - -
z1d.xlarge 2 4 32 0.514$ 0.834$ - -
z1d.2xlarge 4 8 6 1.038$ 1.668$ - -
z1d.3xlarge 6 12 96 1.492$ 2.502$ - -
z1d.6xlarge 12 24 192 2.854$ 5.004$ - -
z1d.12xlarge 24 48 384 5.578$ 10.008$ - -
x1.16xlarge 32 64 976 9.801$ 16.256$ - -
x1.32xlarge 64 128 1952 19.471$ 32.512$ - -
x1e.xlarge 2 4 122 1.269$ 1.9261$ - -
x1e.2xlarge 4 8 244 2.548$ 3.8522$ - -
x1e.4xlarge 8 16 488 4.966$ 7.7045$ - -
x1e.8xlarge 16 32 976 9.802$ 15.409$ - -
x1e.16xlarge 32 64 1952 19.474$ 30.8179$ - -
x1e.32xlarge 64 128 3904 38.818$ 61.6358$ - -

利用できるリソース

インスタンスタイプ

上記の利用料金表通りですが、RDS Custom for Oracleで利用可能なインスタンスタイプは m5シリーズもしくはr5シリーズのみとなり、z1d や x1e は利用できません。
RDSやEC2はコア数制限をかけることも可能です。
詳しくは Amazon RDS for Oracle に R5 インスタンスクラスでの新しいメモリ構成が追加されましたでご確認ください。
Customについても、CustomのイメージはAMIとなるので、該当のAMIに対して vCPUの指定 を行いコア数やHyperThreadingの設定(CPU最適化オプション)をする事は可能ですが、RDSと紐づけられないので現時点では利用できないと思われます。(←前提にサポートされていない機能、と記載がありました)

現時点ではEC2や従来型のRDSに比較しても選択できるインスタンスタイプは少ない状況です。
また、RDS Customの制限にあるとおり、Customでは動的なインスタンスタイプの変更が行えませんが、Snapshotを利用しての変更は可能です。

ストレージ

各構成にアタッチできるストレージは以下のような違いがあります。
RDSとRDS Customは同じ制限となります。
EC2の場合には複数ボリュームをアタッチすることで帯域を拡張することが可能ですが、インスタンス側の制限が上限となります。
また、RDS Customもボリュームタイプの変更(gp2 → io1 のような)が可能なはずなのですが、試した限りではメッセージが出て変更できませんでした(Snapshotを利用しての変更は可能でした)。

特徴 Oracle On
Amazon EC2
Amazon RDS
for Oracle
Amazon RDS
Custom for Oracle
ストレージタイプ gp2
io1
gp3
io2
io2 Block Express
sc1
st1
gp2
io1
Magnetic
gp2
io1
最大サイズ 複数EBSの利用により64TB以上可能 64TB 64TB
最大IOPS 256,000
io2 Block Expressの利用
r5bインスタンスのみ
40,000
io1の利用
40,000
io1の利用
オートスケーリング × ×
ユーザガイド

なお、CustomにおいてはOS部分、DB HOME部分(/rdsdbbin)は gp3 で自動的に作成され、それぞれ初期値は 26GB、25GB となってました(作成時に指定はできない)。ファイルシステムは ext4 です。
また、DB領域(/rdsdbdata)は指定したサイズのデバイスがマウントされます。中身をみると、指定したサイズの 1/4 のPVが 4本作製され、vgとしてまとめられてます(40GBで指定すると、10GBずつ4本のボリュームが作成されます)。
image.png


参考までにvgdisplay -vの結果を張り付けておきます(UUIDは削除してます)
  --- Volume group ---
  VG Name               dbn0
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               39.98 GiB
  PE Size               4.00 MiB
  Total PE              10236
  Alloc PE / Size       10236 / 39.98 GiB
  Free  PE / Size       0 / 0

  --- Logical volume ---
  LV Path                /dev/dbn0/lvdbn0
  LV Name                lvdbn0
  VG Name                dbn0
  LV Write Access        read/write
  LV Creation host, time ip-xx-xx-xx-xx, 2021-11-18 14:48:17 +0900
  LV Status              available
  # open                 1
  LV Size                39.98 GiB
  Current LE             10236
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           252:0

  --- Physical volumes ---
  PV Name               /dev/nvme5n1
  PV Status             allocatable
  Total PE / Free PE    2559 / 0

  PV Name               /dev/nvme3n1
  PV Status             allocatable
  Total PE / Free PE    2559 / 0

  PV Name               /dev/nvme1n1
  PV Status             allocatable
  Total PE / Free PE    2559 / 0

  PV Name               /dev/nvme4n1
  PV Status             allocatable
  Total PE / Free PE    2559 / 0

  --- Volume group ---
  VG Name               dbdata01
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               39.98 GiB
  PE Size               4.00 MiB
  Total PE              10235
  Alloc PE / Size       10235 / 39.98 GiB
  Free  PE / Size       0 / 0

  --- Logical volume ---
  LV Path                /dev/dbdata01/lvdbdata01
  LV Name                lvdbdata01
  VG Name                dbdata01
  LV Write Access        read/write
  LV Creation host, time ip-xx-xx-xx-xx, 2021-11-18 14:48:17 +0900
  LV Status              available
  # open                 1
  LV Size                39.98 GiB
  Current LE             10235
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           252:1

  --- Physical volumes ---
  PV Name               /dev/dbn0/lvdbn0
  PV Status             allocatable
  Total PE / Free PE    10235 / 0


機能差

本節ではOracle Databaseとしての機能差に絞って記載します。

RDS Custom for Oracle

RDS Custom for OracleでFALSEになっているオプションはRACやASM等、以下の8個の機能になります。(v$optionで確認)

Real Application Clusters
Automatic Storage Management
Oracle Label Security
Oracle Database Vault
Unified Auditing
Management Database
I/O Server
ASM Proxy Instance

また、とても重要な点として、RDS Custom for Oracleでは文字コードが固定で US7ASCII となります。現時点では変更することはできません。

RDS for Oracle

RDS for Oracle(EE)でFALSEになっているオプション機能も、Customと同様に以下の8個です。

Real Application Clusters
Automatic Storage Management
Oracle Label Security
Oracle Database Vault
Unified Auditing
Management Database
I/O Server
ASM Proxy Instance

構築/運用

構築

クラウド環境上でOracle Databaseの構築に必要な作業は、大きく以下のような順序で実施されると想定してます。

  1. OS設定(OSパッチ適用、環境設定)
  2. Oracle DBソフトのインストール
  3. Oracle DB作成
  4. Oracle DB環境設定(初期化パラメータや表領域、スキーマの設定等)
  5. Oracle DB HA構成設定(クラスタソフトのインストール・設定)
  6. Oracle DB運用設定(ジョブ実行環境の設定・監視設定・バックアップ設定)

以下の図の通り、RDSを利用することで、OS設定(必要なパッチ・カーネルの設定)やソフトウェアのインストール、DBの作成等は不要となります。
そのため、DB環境設定等、DB管理者として必要な作業に集中することができるようになります。
また、運用設定においても、OSへログイン・ファイル配置等が行える事で、オンプレ環境で利用していた運用シェル等や、エクスポート・インポートの機能をそのまま利用することが可能となり、単純移行・クラウドリフトを行いたい場合にはメリットがあると考えてます。

構築作業 Oracle On
Amazon EC2
Amazon RDS
for Oracle
Amazon RDS
Custom for Oracle
1. OS設定 必要 不要 不要
(カスタマイズする場合には必要)
2. Oracle DBソフトのインストール 必要 不要 不要
事前のCEV(Custom Engine Version)の作成が必要
3. Oracle DB作成 必要 不要 不要
4. Oracle DB環境設定 必要 必要 必要
5. Oracle DB HA構成設定 要件による
Data Guard設定等を想定
マルチAZ構成のため不要
クロスリージョン自動バックアップも可能
要件による
Data Guardの設定が可能
6. Oracle DB運用設定 必要
エージェントインストール・設定を想定
必要
他のサーバでジョブ実行を想定
監視はCloud Watchへのログエクスポートによるフィルタリングが可能
必要
エージェントインストール・設定を想定

運用

Oracle Database環境の運用としては、以下のような作業があると想定してます。

  • システムメンテナンス運用
  • データベースバージョン管理(パッチ適用)
  • データベースのバックアップ・リカバリ
  • 監視運用(パフォーマンス・リソース監視、死活監視、ログ監視)

RDS、RDS Customを利用した時の運用における違いは以下になります。
RDS Customではバージョン管理やメンテナンスタイミングをユーザの管理下に置けます。
監視機能については、DB部分はRDSイベント通知、OS部分は自動的にインストールされるSSM Agentで監視が可能です。
ただ、SSM Agentでの監視については、デフォルトでアラートログがCloudWatchに連携されたりはしないため、実施するためには作りこみが必要になります。(Oracle On EC2 でもSSM Agentを入れれば同じことは可能となります)

運用作業 Oracle On
Amazon EC2
Amazon RDS
for Oracle
Amazon RDS
Custom for Oracle
システムメンテナンス運用 ユーザ管理 AWS管理
週次のメンテナンスウィンドウが必要
ユーザ管理
メンテナンスウィンドウは設定される
データベースバージョン管理
(パッチ適用)
ユーザ管理
適用タイミングは選択可能
個別パッチ等も適用可能
パッチ選定・適用作業はAWS管理
RU(Release Update)もしくはRUR(Release Update Revision)ベースでの適用
個別パッチの適用は不可
パッチ適用作業のみAWS管理
パッチ選定・適用タイミングはユーザ管理
個別パッチ等も適用可能
データベースのバックアップ・リカバリ ユーザ管理 AWS管理 AWS管理
ユーザでの管理も可能
パフォーマンス監視 ユーザ管理 AWS管理
パフォーマンスインサイト利用可能
AWS管理が可能
SSM Agentの機能が利用可能
リソース監視 ユーザ管理 AWS管理
CloudWatch利用可能
AWS管理が可能
SSM Agentの機能が利用可能
死活監視 ユーザ管理 AWS管理
RDSイベント通知利用可能
AWS管理が可能
RDSイベント通知利用可能
ユーザ管理での監視も可能
ログ監視 ユーザ管理 AWS管理
CloudWatch利用可能
AWS管理が可能
SSM Agentの機能が利用可能

まとめ

現時点で RDS Custom for Oracle のユースケースとしては、以下のような場合かと考えてます。

  • オンプレ環境からAWS環境へOracle Databaseの単純移行を行いたいが、バックアップ等はクラウドの機能を利用したい
    • 単純移行なのでOS上の環境構成等はなるべくそのままにしたい
  • Oracle環境へのパッチ適用はシステム影響を鑑みて細かく調整したいが、マネージドな機能は利用したい

どちらかというと、新規にAWS上でOracle Databaseを利用したい、というよりもオンプレからの移行の際の選択肢の一つになってくるのかな、と思いました。
一方で、現時点では利用にあたって文字コードが US7ASCII しか利用できない点は、日本での利用においては大きな障害となると考えており、機能改善が待たれるところです。

話はそれますが、Oracle CloudのDBCS(Database Cloud Service)も同じような仕組み(OSへrootログイン可能)なマネージドデータベースとして構成されており、今回はできませんでしたがDBCSとの比較等も別途実施したいと考えてます。


  1. DataGuardを利用したRead Replica 構成でのマルチAZは可能です Working with read replicas for RDS Custom for Oracle 

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2