オンプレミス環境からRDS for Oracle移行手順

#1.仕組み図
![111111.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693974/fa07c978-6242-8453-60e0-03e2f2bd27dc.png)


#2.AWS環境構築

##1.VPC
|VPC|10.0.0.0/16|リネーム|
|:--|--:|:--:|
|EC2 Subnet1|10.0.0.0/24|sb-1a-om-ec2|
|EC2 Subnet2|10.0.1.0/24|sb-1c-om-ec2|
|RDS Subnet3|10.0.2.0/24|sb-1a-om-db|
|RDS Subnet4|10.0.3.0/24|sb-1c-om-db|

##2.internet Gateway 作成

|VPC|attach|
|:--|--:|:--:|
|VPC|10.0.0.0/16|

###1.Route Table

####1.InterGateway 追加

|Route|attach|
|:--|--:|:--:|
|送信先|ターゲット|
|0.0.0.0/0|igw-xxxxxxxxxxx|
####2.サブネットの関連付け

|Subnet|zone|
|:--|--:|:--:|
|10.0.0.0/24|1a|
|10.0.1.0/24|1c|

##3.RDS Subnet group

|availability‐zone|subnet|
|:--|--:|:--:|
|ap-northeast-1c |10.0.3.0/24|
|ap-northeast-1a |10.0.2.0/24|

##4.Security Group

###1.EC2側

|inbound rules||||
|:--|:--:|--:|--:|
|type|protocol|Port|Source|
|http |TCP|80|My IP|
|ssh |TCP|22|My IP|

|outbound rules|
|:--|:--:|--:|--:|


###2.DB側

|inbound rules||||
|:--|:--:|--:|--:|
|type|protocol|Port|Source|
|Oracle |TCP|1521|10.0.0.0/24|

|outbound rules|
|:--|:--:|--:|--:|

##4.EC2
|EC2|「無料プラン」|
|:--|:--:|--:|
|バージョン|/Windows_Server-2016|
|インスタンスタイプ|t2.micro|

##5.RDS for Oracle
###1.RDS Subnet group

|RDS Subnet group||
|:--|:--:|--:|--:|
|availability‐zone|subnet「om-db-sbg」|
|ap-northeast-1c   |10.0.3.0/24|
|ap-northeast-1a   |10.0.2.0/24|

###2.RDS オプショングループ

|RDS オプショングループ||
|:--|:--:|--:|--:|
|名前|subnet「om-db-sbg」|
|説明|10.0.3.0/24|
|エンジン|10.0.2.0/24|
|メジャーエンジンバージョン|10.0.2.0/24|
|オプションの追加|
|オプション名|S3_INTEGTATION|
|バージョン|1|
|すぐに適用|Yes|

##6.S3
##7.IAM
###1.新規ポリシー

|Policy「S3」|s3-integration-policy|
|:--|:--:|--:|--:|
|GetObject|Amazon S3 バケットから Amazon RDS へのファイルの転送に必要。|
|ListBucket | Amazon S3 バケットから Amazon RDS へのファイルの転送に必要。|
|PutObject  |Amazon RDS から Amazon S3 バケットへのファイルの転送に必要。|

###2.新規ロール

|Role「RDS」|s3-integration-policy|
|:--|:--:|--:|--:|
|RoleとPolicy連携|

#3. ダンプファイル抽出「移行元」

##1.Dosコマンドライン起動
コマンドプロンプトをさがしてから、起動します。

```
cmd
```

##2.Oracle Databaseにユーザー名SYSDBAで接続します

```
sqlplus USER as sysdba　
```

##3.ディレクトリオブジェクト作成

```
SQL> CREATE OR REPLACE DIRECTORY dpump_dir1 AS '/home/oracle/oradata/dpump_dir';
```
##4.権限付与

```
SQL> GRANT READ,WRITE ON DIRECTORY dpump_dir1 TO scott;
```
##5.退出

```
SQL> EXIC；
```

##6.DMPファイルエクスポート

```
expdp BIZSLC/s#b14orcl tables=B_BPW_D_ANNOTATION dumpfile=testfile2.dmp directory=testdir logfile=testlog2.log;
```

##7.タンプーファイル取得

```
EXPDAT00000.DMP
```

##8.S3 Bucketへのダウンロード

#4.タンプーファイル転送「移行先」
##1．Oracle SQL Developer登録
コネクションネムーとユーザーとパスワード入力
##2.S3へのアップロード
###1.S3へのアップロード「移行元から移行先へ」
```
SQL> SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
       p_bucket_name => 'oraclemigration',
       p_directory_name => 'DATA_PUMP_DIR',
     AS TASK_ID FROM DUAL; 

TASK_ID
--------------------------------------------------------------------------------
1562135977873-3

```
###2.ログの確認
RDSとS3接続するために、ログを調査します。接続できるかどうか確認します。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1562135977873-33.log'));

TEXT
--------------------------------------------------------------------------------
2019-07-03 06:39:39.129 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datap
ump/scott.dmp to Amazon S3 with bucket name orcl-test and key orcl-test/scott.dmp

2019-07-03 06:39:41.300 UTC [INFO ] The file /rdsdbdata/datapump/scott.dmp was uploaded to Amazon S3 with bucket name orcl-test and key orcl-test/scott.dmp.

2019-07-03 06:39:41.300 UTC [INFO ] The task finished successfully.

```
###3.DATA_PUMP_DIRのファイルを確認「移行元から」

```
select * from TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) ORDER BY MTIME;

FILENAME             TYPE         FILESIZE MTIME
-------------------- ---------- ---------- ---------
EXPDAT0807.DMP           file         26267648 03-JUL-19 ★ダウンロードされた
datapump/            directory        4096 03-JUL-19
```
###4.ログ情報確認

```
SQL> SELECT TEXT FROM TABLE(RDSADMIN.RDS_FILE_UTIL.READ_TEXT_FILE('DATA_PUMP_DIR','imp_scott.log'));

TEXT
--------------------------------------------------------------------------------
Master table "TEST"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "TEST"."SYS_IMPORT_SCHEMA_01":

```

###※移行完了後ログ不要になるので削除
####1.移行ログ
```
SQL> exec UTL_FILE.FREMOVE('DATA_PUMP_DIR','imp_scott.log');
--------------------------------------------------------------------------------
PL/SQL procedure successfully completed.

```
####2.タンプーファイル削除
```
SQL> exec UTL_FILE.FREMOVE('DATA_PUMP_DIR','scott_copy.dmp');
--------------------------------------------------------------------------------
PL/SQL procedure successfully completed.
```
####3.もう一回DATA_PUMP_DIR確認します。
```
SQL> select * from TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) ORDER BY MTIME;
--------------------------------------------------------------------------------
datapump/        directory        4096 02-JUL-19
```

#これ以上で移行完了しました。