Oracle DatabaseのDRを深掘りする：なぜ、どう構築するべきか？


## Oracle データベースにおける高可用性とディザスタリカバリを再考する
こんにちは。インサイトテクノロジーの須貝です。

<a href="https://qiita.com/ssugai/items/051f9253f9e215ca161f" target="_blank" rel="noopener noreferrer">前回の記事</a>では、データベースの災害復旧（Disaster Recovery、以下DR）について、その基本的な考え方を共有しました。今回はその続編として、とくに Oracleデータベースに特化したDR構築の詳細な方法や運用での注意点に焦点を当てます。

DRは単なるバックアップとは異なり、システムを迅速かつ確実に復旧させるための戦略的な計画です。これには、障害時のダウンタイムを最小限に抑えるための技術やプロセスが含まれます。本記事では、以下のトピックを取り上げます：
- DR設計の基礎（RTO/RPOと選択肢）
- Oracle Data Guardの仕組みと設計方法
- クラウド環境におけるDR構築の課題と対策
- DR運用のベストプラクティス
- 現場でのトラブルシューティングの重要性

それでは本題に入りましょう。

---

## DR構築の全体像
DRの構築において重要なのは、単にシステムを冗長化するだけではありません。**RTO（Recovery Time Objective）** と **RPO（Recovery Point Objective）** を基に、具体的なシステム要件を定義し、それを達成するための構成を選択する必要があります。

### RTOとRPOの具体例
以下に、ビジネス要件ごとに異なるRTOとRPOの設定例を示します。

| **業種/システム**          | **RTO（復旧目標時間）** | **RPO（許容データ損失）**          |
|---------------------------|-----------------------|----------------------------------|
| オンラインショップ         | 10分以内               | 数秒以内（直近の注文データを保護） |
| データ分析システム         | 24時間以内             | 1日（再分析が可能であれば許容）   |
| 金融取引システム           | 数秒以内               | 数秒以内（取引データの正確性重視）|
| 社内文書管理システム       | 数時間以内             | 数時間以内（若干の遅延が許容される）|

こうした目標を設定することで、必要な構成と運用が明確になります。

---

### DR手法の選択肢
Oracle DatabaseのDR構築には複数のアプローチがあります。それぞれの特徴を以下にまとめました。

| **手法**                  | **メリット**                                       | **デメリット**                                   |
|---------------------------|--------------------------------------------------|------------------------------------------------|
| 物理スタンバイ（Physical Standby） | データ整合性が高い、高速な復旧                   | コストが高く、ネットワーク帯域を考慮する必要がある |
| 論理スタンバイ（Logical Standby）  | 柔軟性が高い、データ構造変更に対応可能           | 運用が複雑化しやすい                           |
| スナップショットスタンバイ（Snapshot Standby） | テストや開発環境として利用可能                   | 本番環境に即座に戻す際の手順が必要             |

これらの手法は、ビジネス要件や運用リソースに応じて選択されます。

---

## Oracle Data Guardの仕組みと設計
Oracle Data Guardは、プライマリデータベースとスタンバイデータベース間でデータの同期を行い、障害時の即時復旧を可能にする強力なツールです。

### 同期モードと非同期モード
データ同期方式を以下の表にまとめます。

| **モード**                | **特徴**                                                                               | **用途**                                         |
|---------------------------|--------------------------------------------------------------------------------------|------------------------------------------------|
| 同期モード（SYNC）         | プライマリでのトランザクションがスタンバイへの適用完了後にコミットされる。             | データ整合性を重視するミッション・クリティカルなシステム |
| 非同期モード（ASYNC）      | プライマリでトランザクションがコミット後にスタンバイに送信される。                     | ネットワーク遅延を最小化したい広域ネットワーク構成 |

---

### マルチスタンバイ構成
Data Guardでは、1つのプライマリデータベースに対して複数のスタンバイを構成できます。

| **スタンバイの種類**     | **特徴**                           | **主な用途**                                |
|--------------------------|------------------------------------|-------------------------------------------|
| ローカルスタンバイ       | 同一データセンター内で構成可能     | 短時間での障害復旧を実現                   |
| リモートスタンバイ       | 地理的に離れた場所で構成           | 災害対策や広域障害への備え                 |

この構成により、リスク分散が可能になります。

---

## クラウド環境での課題と対応
クラウド環境でのDR構築には、オンプレミスとは異なる特有の課題があります。

### 主な課題と対策
以下に課題とその対応策をまとめました。

| **課題**                         | **詳細**                                           | **対応策**                                   |
|----------------------------------|--------------------------------------------------|---------------------------------------------|
| クラウドネイティブDR機能の制限    | 標準機能ではカスタマイズ性が限定的                | OCIの高度な機能（Data Guard）を活用          |
| ネットワーク遅延                 | リージョン間の距離による遅延が発生する            | ネットワーク設計の最適化、非同期モードの利用 |

---

## DRのベストプラクティス
効果的なDR運用には、計画だけでなく、運用中の実践が重要です。

| **ベストプラクティス**           | **詳細**                                         |
|----------------------------------|------------------------------------------------|
| 定期的なフェイルオーバーテスト    | 定期的に実施し、障害時の手順を確認              |
| モニタリングの強化               | Data Guard Brokerを活用し、状態監視を継続的に行う |
| スイッチオーバーの活用           | スタンバイ環境の検証を兼ねて定期的に実施        |

---

## 最後に

上述したOracle Data Guard は　Oracle EE (Enterprise Edition)のライセンスに含まれており、Oracle EEの専用機能として提供されています。では、Oracle SE（Standard Edition）を利用する場合のDRについては、どう実現するのが最適解でしょうか？Oracle SEは機能に制約があるため、特定の工夫やツールが必要です。次回の記事では、それをどのように実現するかを掘り下げていきます。

DR構築は単なる技術的な課題ではなく、ビジネス継続性を守るための重要な取り組みです。本記事で紹介した内容が、実際のDR設計や運用に役立つことを願っています。