第1回目では、Oracle Databaseを構成する環境に関する選択肢として、以下の3点を提示した。
- オンプレミスのサーバにOracle Databaseをインストールする、「Oracle Database on オンプレミスサーバ」
- AWSの仮想サーバ「EC2」上にOracle Databaseをインストールする、「Oracle Database on EC2」
- AWSのOracle Databaseのフルマネージド型サービスを利用する、「RDS for Oracle」
今回は、これらの環境のうち、2および3におけるOracle Database環境の構築のポイントを紹介したい。
Oracle Database on EC2利用のポイント
AWSの仮想サーバであるEC2上にOracle Databaseをインストールして利用する場合、同じくクラウド上でOracle Databaseを利用する「RDS for Oracle」の環境に比べて、以下のような点でメリットがある。
- RDS for Oracle よりも大きな(より高性能な)インスタンスタイプを選択できる
- Oracle Databaseの機能(ディレクトリオブジェクトなど)に制限がかからない
- RDS for Oracleよりもパラメータの設定などを自由に行うことができる
- Oracle Databaseのバージョン、適用する個別パッチの選択肢が広い
- Enterprise Editionも稼働可能であり、すべてのオプションを利用できる
筆者が実際に担当した案件でも、初めは「RDS for Oracle」で検討を進めていたが、上記のような理由を鑑みてやはり「Oracle Database on EC2」でOracle Databaseを構築するユーザーは多いように感じる。
EC2上にOracle Databaseをインストールして利用する場合であっても、データベースはクラウドならではの多くのメリットを享受できる。例えば、「足りないリソースは即時に調達できる」「サーバやストレージの運用から担当者は解放される」など、オンプレミスの環境に比べて運用面、必要なリソースの調達のスピードなどのメリットは大きい。
ではここで、EC2上にOracle Databaseを構築する場合のポイントを紹介する。
(1)インスタンスタイプの選択
Oracle Databaseに限らず、一般的なデータベースはアプリケーションサーバなどに比べて、多くのメモリを消費する。EC2ではこのような場合、メモリが最適化されている「R3」と呼ばれるインスタンスタイプが存在するので、Oracle DatabaseをEC2上で構築する場合は、性能の観点からこのような大きなメモリを搭載したタイプのインスタンスを選択するようにしたい。
(2)データファイルを配置するストレージ
EC2には、エフェメラルディスクと呼ばれるディスクが付属されているインスタンスもあるが、このディスクは揮発性なので、EC2インスタンスの停止を行うとデータは消えてしまう。このため、このディスク上をOracle Databaseの永続領域として利用することは基本的には考えず、Amazon Elastic Block Store(以下、EBS)というEC2とともに使用する永続的なブロックレベルストレージボリュームを利用する。
また、EBSにも、EBS汎用SSD(gp2)ボリューム、EBSプロビジョンドIOPS SSD(io1)ボリュームなどいくつかの種類があるが、最もよく利用されるEBS汎用SSD(gp2)ボリュームを利用する場合は注意が必要である。データベースのデータ領域を複数のEBS汎用SSD(gp2)ボリュームで構成する場合、EBS汎用SSD(gp29ボリュームは1GB当たり3IOPSというベースIOPSが設定されている。このため、複数のEBSでデータベースのデータ領域を構成する場合は、同じ容量のEBSで構成しないとIO性能にムラができてしまうので気を付けてほしい。
(3)Oracle ASMの利用
Oracle DatabaseではOracle Automatic Storage Management(以下、ASM)という機能が存在する。ASMはOracleが提供するストレージ管理機能であり、ディスクのミラーリングやストライピング、動的なボリュームの追加や削除などの機能を持つ。EC2上でOracle Databaseを利用する場合であっても、もちろんこのASMの利用は可能となる。EC2にひもづけるEBSの本数が複数になった場合、このASMを利用することで、ストレージの管理はより容易となる。
ただし、EBSが備える「EBS スナップショット」というバックアップ関連の機能には注意が必要である。ASMを利用する場合、この機能を利用したデータベースのバックアップが基本的には行えず、Recovery Manager(RMAN)と呼ばれるOracle Databaseの標準のバックアップツールを利用しなければならないからだ。
RDS for Oracle利用のポイント
RDS for Oracleを利用して、AWS上でOracle Databaseを構築する場合、構築自体は数クリックと非常に簡単だが、いくつかのポイントを押さえておく必要がある。
(1)RDBMSサービスであって、データベースサーバではない
RDS for OracleはRDBMSサービスであり、データベースサーバではない。このため、利用者はOSなどを意識せず、SSHやRemote Desktopで接続はしないで、Oracleクライアントからエンドポイントと呼ばれる専用のDNS名で接続を行うことになる。この点において、求めているシステムの要件を満たすことができるのかを十分に検討する必要がある。
(2)インスタンスタイプがEC2ほど豊富ではない
2016年5月時点でRDS for Oracleで利用できるインスタンスタイプは豊富にそろっているが、それでもEC2に比べれば種類は少ない。このため、システムの利用者数の拡大などでデータベースに求められるマシンパワーが大きくなる場合、RDSでは対応しきれない可能性もあるので注意が必要である。
(3)Enterprise Editionのいくつかのオプション機能が利用できない
Oracle Enterprise Editionではさまざまなオプションが利用可能だが、いくつかのオプションの機能がRDS for Oracleでは利用できないことに注意いただきたい。
上記のポイントを押さえ、RDS for Oracleでもシステム構成上問題ないと判断できた場合、RDS for Oracleを導入することで、データベースの運用担当者は今まで多くの時間を割いていた設計・運用の作業を、AWSのマネージドサービスにて置き換えることができる。
例えば、バックアップは自動で取得され、最大5分前まで戻すことが可能であり、冗長構成での災害対策も数クリックで実装可能である。また、自動でパッチなどの適用も行ってくれて、ストレージ容量の追加も簡単に行える。ライセンスの購入を行う必要もなく、スケールアップ、ダウンもライセンスに縛られず自由に行える。
オンプレミスやEC2上でOracle Databaseを稼働させる場合はバックアップの設計実装、災害対策としての冗長構成の検討・実装など、さまざまな事柄を検討し、運用していかなければならないが、これらをすべてAWSに任せられるのは非常に大きなメリットとなるだろう。
RDS for Oracleの場合、RDS for Oracleの作成、Oracle Databaseのパラメータの変更、バックアップの設定まで、基本的に「amazon management console」にてGUIで操作、設定が可能。上記は「amazon management console」からRDSサービスを選んだ時の画面 |
山口 正寛
1984年大阪府生まれ。データベースエンジニア、コンサルタントなどの活動経験が豊富。現在は株式会社システムサポートの東京支社 クラウド事業部 マネージャーとして、主にDatabase(特にOracle、Redshift)領域を担当。Amazonの提供するリレーショナルデータベースのAuroraにも詳しい。クラウド工房 ブログでときどき関連情報を発信している。職場ではオフィスグリコを絶賛消費中。