OCIのBase Database Serviceで Zero Data Loss Autonomous Recovery Service (ZRCV)を有効化する

# はじめに～ZRCVとは～
OCIのBase Database Serviceには自動バックアップソリューションとしてObject Storageへバックアップを取る方法が選択できるが、
新たにZero Data Loss Autonomous Recovery Service（ZRCV）と呼ばれるバックアップ手法も取れるようになったため設定方法含めて記載をしておきます

製品概要としては[こちら](https://speakerdeck.com/oracle4engineer/zrcv-overview
 "Zero Data Loss Autonomous Recovery Service サービス概要
")が非常に参考になるため、ご確認頂けると良いと思います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/51708f5f-3840-a1e9-a1dd-953bbb3af9dc.png)


## ZRCVのメリット
私が個人的に良いと思えた点を記載しておきます

- REDOログまで含めたバックアップ(リアルタイムデータ保護オプション)を行うため、直近までの状態にリストアができる
    - 本番環境への障害の影響を極小化出来る。(RTO/RPOの短縮)
- エディションがStandard Editionでも利用できる
- 料金もObject Storageと比べてそこまで高くない([課金例参考](https://speakerdeck.com/oracle4engineer/zrcv-overview?slide=13))
    - REDOログのサイズ次第ではありますが、非常にリーズナブルな利用ができます

# 構築してみる
それでは実際に構築してみたいと思います。
今回はBase DatabaseのStandard Editionを構築しながら、ZRCVを有効化させるところまで実施します。


## 事前準備

### ポリシーの作成
ZRCVを利用するには事前にポリシーを有効化させておく必要があります。

適宜グループやコンパートメントの設定に変更ください
```
Allow service database to manage recovery-service-family in tenancy
Allow service database to manage tagnamespace in tenancy
Allow service rcs to manage recovery-service-family in tenancy
Allow service rcs to manage virtual-network-family in tenancy
Allow group admin to manage recovery-service-family in tenancy
```
https://docs.oracle.com/ja-jp/iaas/recovery-service/doc/recovery-service-permissions.html#GUID-867093E8-DBC2-4FD1-9002-5A5722749F9E

ポリシービルダーからも簡単に設定ができます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/7ea73af9-4f6d-b619-8489-cf472446421d.png)

### リカバリ・サービス・サブネットの作成
ZRCVを利用するには、BaseDBを構築するVCN内にサブネットを作成する必要があります。

:::note 
BaseDBが存在する同一のサブネットを指定するのではなく、
リカバリ・サービス・サブネット専用で1つのプライベート・サブネットを作成することをお薦めします。
https://docs.oracle.com/ja-jp/iaas/recovery-service/doc/about-recovery-service-network.html#GUID-C6528D21-CBF9-4437-898B-16E561F6D5E7
:::

サブネットは下記イングレスルールを許可するように、セキュリティリストを設定ください
- 宛先8005と2484ポートを許可
- ソースIPはVCNのIPアドレスに変更ください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/0a14b37b-0224-131f-8b93-35d34d78cb17.png)

### リカバリ・サービス・サブネットの登録
作成したリカバリサービスサブネットを、次の設定で登録してあげる必要があります

- Oracle Databaseより、データベース・バックアップをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/47735472-7baa-b492-a738-6dbbecdfb770.png)
- リカバリ・サービス・サブネット→リカバリ・サービス・サブネットの登録
    - 先ほど作成したサブネットを指定の上、登録をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/c30d7555-df9c-a45b-bf5b-4aaa6297d98f.png)

## DB構築
事前準備が完了しいよいよDB構築です

### DB作成
従来と変わらない方法でBaseDBを作成しますが、
データベースのバックアップの構成設定で下記を設定します



- バックアップの保存先：Autonomous Revovery Service
    - 既にデフォルトの選択肢がこちらになっております
- Protection policy：任意
    - 保存したい期間に応じて選択ください。事前設定で任意の期間に設定することも可能です。([保護ポリシーの作成](https://docs.oracle.com/ja-jp/iaas/recovery-service/doc/create-protection-policy.html))
- リアルタイム・データ保護の有効化：チェック
    - こちらにチェックをいれることで、REDOを含めたZRCVの利用が可能になります
    - 逆にチェックをいれないことで、REDOが含まれないRCVの利用になります
- その他削除後のポリシーやバックアップ時間は任意で選択ください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/44b55baf-cf4f-dce2-24ef-06e0fe2f5d34.png)

### 設定確認
- バックアップの保存先が"Autonomous Revovery Service"になっていることと、リアルタイム・データ保護の有効化がされていること、保存ポリシーも選択したものになっていることを確認
- データベース詳細→バックアップのページから、"Automatic Backup"表記でバックアップが取得されていることがわかる
     ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/608c7b72-3b21-d282-0f44-d0a09286e025.png)
- また、リカバリサービスサブネットを設定した、データベース・バックアップページでも確認ができる
     ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/fdebb873-d8df-868b-211c-8d1db633f89a.png)



## バックアップ/リストアの確認
### バックアップ
上記確認と同じように、バックアップページより確認可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/2d870ef6-b0d8-4a17-0626-da4ef718fa89.png)

### リストア
Restoreボタンをクリックで選択肢が出てきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2470077/b86944db-2712-3e32-90e9-be9fd4d12793.png)

- 最新にリストア
    - 最も最新の状態にリストアされます
- タイムスタンプにリストア　
    - 指定した日時にリストア
- SCNにリストア
    - SCNを指定した上でリストアができます
    - 現在のscnを確認する方法
        ``` SQL
        SQL> select current_scn from v$database;
           CURRENT_SCN
        ______________
              25116124
        ```

# 終わりに
最初の初期設定は必要だが、ZRCVの設定は特に躓くこと無く簡単に設定ができた。
今後のデフォルトの推奨バックアップ先は今回紹介したAutonomous Recovery Serviceが中心となるため、ぜひ本記事を通して設定方法の理解を深めていだけますと幸いです。


# 参考資料
https://speakerdeck.com/oracle4engineer/zrcv-overview

https://docs.oracle.com/ja-jp/iaas/recovery-service/index.html

https://docs.oracle.com/ja/solutions/back-up-base-database-zero-data-loss-recovery/index.html#GUID-2C6B64BC-7F2B-4F13-B01F-FAEDCC5205D1