【RDS for Oracle】ノーアーカイブログモードへ変更

# はじめに
AWSの[ユーザガイド](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html)を確認すると。。。

>大量のデータをロードしている間など、特定の状況では、自動バックアップを一時的に無効にすることをお勧めします。

とあります。
デフォルトはアーカイブログモードのため、DataPumpなどでインポートしたとき、アーカイブログが大量に生成されディスクを圧迫する恐れがあるということですね。

オンプレのOracleでもインポート前に`SQL> alter database noarchivelog;`で、ノーアーカイブログモードにしてました。

しかし、RDSではSYSやSYSTEMユーザでログインできず、alter database文も実行できません。

どうやら、RDS for Oracleのばあい、自動バックアップを無効化することで、アーカイブログモード（デフォルト）から`ノーアーカイブログモード`に変更できるようです。

自動バックアップを無効化した場合、以下の注意点があります。
移行などの作業時に一時的に無効するのがよさそうです。

>重要
自動バックアップは、無効にするとポイントインタイムリカバリも無効になるため、無効にしないことを強くお勧めします。DB インスタンスの自動バックアップを無効にすると、そのインスタンスの既存の自動バックアップがすべて削除されます。自動バックアップを無効にしてから再度有効にした場合、自動バックアップを再度有効にした時点からしか復元できません。

また、自動バックアップの無効化（ノーアーカイブログモードへの変更）時にはDBインスタンスが`再起動`するようです。


# 自動バックアップの無効方法（ノーアーカイブログモード）

- RDSコンソールで対象インスタンスを選択
- `変更`を選択すると、`DBインスタンスの変更`ページが表示される
<img width="1657" alt="RDS_·_AWS_Console.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/bcd58598-4f14-af47-9a2d-3de32d0ceaf6.png">

- `バックアップの保存期間` で `0 days (0 日)` を選択
- `次へ` を選択

<img width="845" alt="RDS_·_AWS_Console2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/9e1caf72-dc99-12d8-2b83-840f095e6551.png">


- `すぐに適用`を選択
- 確認ページで、`DBインスタンスの変更`を選択して変更を保存し、自動バックアップを無効にします

<img width="839" alt="RDS_·_AWS_Console3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/845bb345-97c6-f069-aaf3-502df935dfc1.png">

- 対象インスタンスのステータスが`変更中`になります
<img width="1655" alt="RDS_·_AWS_Console4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/8caba454-794b-aee8-51af-73fdc40005f8.png">

- `利用可能`となったので変更が反映されます
<img width="1670" alt="RDS_·_AWS_Console6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/83144584-81b8-68d2-75f5-e1c7353b30ea.png">


- `メンテナンスとバックアップ`からスナップショットを確認すると削除されています
<img width="1651" alt="RDS_·_AWS_Console5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/70659a5c-76b0-48b6-8804-1b3774aa84e8.png">


- インスタンスに接続しノーアーカイブログモードになったか確認します。

```sql
SQL> select name,log_mode from v$database;

NAME	  LOG_MODE
--------- ------------
ORCL1	  NOARCHIVELOG  ★ARCHIVELOGからNOARCHIVELOGに変わった
```

# 自動バックアップの有効方法（アーカイブログモード）

 - RDSコンソールで対象インスタンスを選択
 - `変更` を選択すると`DBインスタンスの変更` ページが表示されます。
 - `バックアップの保存期間`で、ゼロ以外の正の値 (7 日など) を選択
<img width="846" alt="RDS_·_AWS_Console7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/8a1f0d25-2620-9648-c1b9-05029595a305.png">
 

 - `次へ`を選択
 - `すぐに適用`を選択
 - 確認ページで、`DBインスタンスの変更` を選択して変更を保存し、自動バックアップを有効化
<img width="858" alt="RDS_·_AWS_Console8.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/72fffc86-a12f-645b-b2b1-532f8a01a3cd.png">

- 対象インスタンスの`ステータス`が`変更中`から`利用可能`になったら変更が反映される

- インスタンスに接続しアーカイブログモードになったか確認します。

```sql
SQL> select name,log_mode from v$database;

NAME	  LOG_MODE
--------- ------------
ORCL1	  ARCHIVELOG
```

- 自動バックアップを有効化した場合、スナップショットも自動で取得してくれるようです。
<img width="1386" alt="RDS_·_AWS_Console11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/2ca31996-fe68-9520-37c1-e0a371e88470.png">


##　手動でスナップショットを取る場合
- RDSコンソールで対象インスタンスを選択
- `アクション` で、`スナップショットの取得` を選択
<img width="1668" alt="RDS_·_AWS_Console9.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/3a201059-1338-0bf7-8790-c13385dc2341.png">

- `DB スナップショットの取得`ウィンドウが表示されます
- `スナップショット名` ボックスにスナップショットの名前を入力します。
- `スナップショットの取得`を選択

<img width="844" alt="RDS_·_AWS_Console10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/3778050f-98ad-0660-cc47-e629323fd485.png">

- `メンテナンスとバックアップ`からスナップショットが取得されたことが確認できます
<img width="1360" alt="RDS_·_AWS_Console12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/543028b2-9aa4-a38b-11e2-754e80e0e2e5.png">


# AWS CLIでの自動バックアップの無効/有効方法
## AWS CLIでの自動バックアップの無効
`modify-db-instance コマンド`を使用して、バックアップ保持期間を` 0` に設定し `--apply-immediately` を指定します。

 - Linux、OS X、Unix の場合

```
aws rds modify-db-instance \
    --db-instance-identifier <インスタンス名> \
    --backup-retention-period 0 \
    --apply-immediately
```

 - Windows の場合

```
aws rds modify-db-instance ^
    --db-instance-identifier <インスタンス名> ^
    --backup-retention-period 0 ^
    --apply-immediately
```

変更が有効になるタイミングを確認するには、バックアップ保持期間の値が `0` になり mydbinstance のステータスが `available` になるまで、DB インスタンスに対して describe-db-instances を呼び出します。

```
aws rds describe-db-instances --db-instance-identifier <インスタンス名>
```

## AWS CLIでの自動バックアップの有効
自動バックアップをすぐに有効にするには、`modify-db-instance コマンド`を使用します。

`（例）バックアップ保持期間を 3 日に設定することで、自動バックアップを有効にします。`

 - Linux、OS X、Unix の場合

```
aws rds modify-db-instance \
    --db-instance-identifier <インスタンス名>  \
    --backup-retention-period 3 \
    --apply-immediately
```

 - Windows の場合:

```
aws rds modify-db-instance ^
    --db-instance-identifier <インスタンス名>  ^
    --backup-retention-period 3 ^
    --apply-immediately
```