【RDS for Oracle】タイムゾーンの変更

[ここ](https://dev.classmethod.jp/cloud/aws/rds-for-oracle-os-timezone/)を参照しながらやりました。

# 注意点

[Oracle のタイムゾーン](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.Timezone.html)より
>タイムゾーンオプションでは、ホストレベルでタイムゾーンが変更されます。タイムゾーンを変更すると、SYSDATE や SYSTIMESTAMP など、すべての日付列および値に影響を与えます。

[Oracle のタイムゾーン](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.Timezone.html)より
>タイムゾーンの前提条件
タイムゾーンオプションは、固定かつ永続オプションです。オプショングループに追加したオプションを削除することはできません。DB インスタンスに追加したオプショングループを削除することはできません。オプションのタイムゾーン設定を別のタイムゾーンへと変更することはできません。

>タイムゾーンオプションを DB インスタンスに追加する前に、DB インスタンスの DB スナップショットを取得することを強くお勧めします。タイムゾーンオプションが正しく設定されていない場合は、スナップショットを使用して、DB インスタンスを復元できます。


[RDS for Oracleにてタイムゾーンの変更がサポートされました](https://dev.classmethod.jp/cloud/aws/rds-for-oracle-os-timezone/)より
>既にOption Groupsがインスタンスに紐付いている場合は再起動がかかります。


# 変更方法
## オプショングループの作成
- RDSのコンソールから`オプショングループ`→ `グループの作成`
<img width="1735" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/d6342e05-50d1-0c80-9eb4-692dcc59f456.png">

- `エンジン`と`メジャーエンジンのバージョン`をオプショングループを紐付けるRDBのエディションとバージョンに合わせる
- 今回は`Standard Edition 2`の`12.1`のOracleを使用するため以下に設定
<img width="834" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/fc3d7a04-caa0-531d-d0d2-07ff50ca03d0.png">

- 作成されたオプショングループを選択し`オプションの追加`
<img width="1736" alt="3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/a130e0b1-8af8-7667-aaa1-4259c7d6128e.png">

- オプションを`Timezone`、タイムゾーンを`Asia/Tokyo`
- 今回はすぐに適用したいので`すぐに適用`を`はい`
<img width="848" alt="4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/79613d9d-567b-16b5-3a9f-2d5d5cbcb093.png">

- `オプションの追加`
<img width="1308" alt="5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/5fdc66f6-f74c-b9de-7aef-7a257c49dab9.png">

##　作成したオプショングループをRDSに付与
- RDSのコンソールで対象インスタンスを選択し`変更`
<img width="1741" alt="6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/6a1c686c-51b6-0a6a-cf79-bddab752bb26.png">

- `データベースの設定`の`オプショングループ`で作成したオプショングループを指定
<img width="839" alt="7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/6544e9f0-a1bc-d54e-147e-96a56379ea09.png">

- 今回はすぐに適用したいので`すぐに適用`を選択し`DBインスタンスの変更`をクリック
- 変更が始まる
<img width="880" alt="8.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/97fc65bf-f473-0958-d549-6709d3d64a78.png">

- 今回は別のオプショングループがインスタンスに紐付いていたのでRDSが再起動される。
- CloudWatchでアラートを確認すると再起動されていることがわかる
<img width="1758" alt="9.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/6d231a0b-3368-a3b2-cd9c-1e6b218dc7b0.png">

## タイムゾーンの確認
- RDS再起動後、インスタンスに接続

```sql
SQL> select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2019-07-03 18:45:04 ★JSTの時刻になっている
```
　`※上記のSQLは2019/07/03 18:45に実行`

# 補足
[RDS for Oracle と S3 でファイルをやり取りする](https://qiita.com/ghogho-seki/items/ac998ffe6e7887a4a8a7)でインスタンスに紐づけた`オプショングループ（orcl-s3）`を今回は付け替えたため、S3 にファイルをアップロードしようとすると以下のエラーが発生した。

　※ orcl-s3はRDSからS3にアクセスするためのオプショングループ

```sql
SQL> SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
        p_bucket_name => 'orcl-test',
        p_directory_name => 'DATA_PUMP_DIR',
        p_s3_prefix => 'orcl-test/',
        p_prefix => 'exp_scott.log')
     AS TASK_ID FROM DUAL; 
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
       *
ERROR at line 1:
ORA-00904: "RDSADMIN"."RDSADMIN_S3_TASKS"."UPLOAD_TO_S3": invalid identifier
```

- `オプショングループ（timezon-jst）`を`オプショングループ（orcl-s3）`に変更しようとしたらエラー
- これに違反した模様

>DB インスタンスに追加したオプショングループを削除することはできません。

<img width="851" alt="10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/09f4fa61-5d1b-b548-d888-27da01c48679.png">

- オプショングループを選択し`オプションの追加`

<img width="1080" alt="11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/fbf9269a-fff2-99be-ad70-c5aed7cc7922.png">

- オプションに`S3_INTEGRATION`を追加してみる
<img width="843" alt="12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/1f11f2a0-7eb2-3064-fc00-d1116f26e664.png">

- 追加された
<img width="1584" alt="13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/23d9e61e-38d1-d33e-ca58-8dce1d9cabfc.png">

- オプショングループを付与しているインスタンスが`変更中`となる
<img width="1585" alt="14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/8133745b-c19f-6237-1e52-36a17c1a33ce.png">

- `利用可能`となれば追加した`S3_INTEGRATION`が反映される
- このときインスタンスの再起動は起こっていません
<img width="1579" alt="15.png" src="https://qiita-image-store.s3.ap-northeast-
1.amazonaws.com/0/449014/2202dbbd-bc74-bc47-7f5a-07046ee3f3fe.png">

- ORCL1上のファイルをS3にアップロード

```sql
SQL> SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
        p_bucket_name => 'orcl-test',
        p_directory_name => 'DATA_PUMP_DIR',
        p_s3_prefix => 'orcl-test/',
        p_prefix => 'exp_scott.log')
      AS TASK_ID FROM DUAL;

TASK_ID
------------------------------------------------------------------------------------------
1562209514266-32

SQL> SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1562209514266-32.log'));

TEXT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2019-07-04 03:05:15.763 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datapump/exp_scott.log to Amazon S3 with bucket name orcl-test and key orcl-test/exp_scott.log.
2019-07-04 03:05:15.851 UTC [INFO ] The file /rdsdbdata/datapump/exp_scott.log was uploaded to Amazon S3 with bucket name orcl-test and key orcl-test/exp_scott.log.
2019-07-04 03:05:15.851 UTC [INFO ] The task finished successfully.
```

- S3を確認
- 無事アップロードされてました。
- オプショングループに`オプション`を複数追加できるみたいです
<img width="1514" alt="16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449014/5305bd0d-9b5c-9ace-a9b6-4a36bc65eb71.png">