【AWS DBS対策】RDS for OracleをAuroraへ移行してみた【後編：スキーマ移行からリソース削除まで】

# 本記事は、前回の記事の続きです。まだご覧になっていない方は[こちら](https://qiita.com/vallack5296/items/4232cf697129f344b4c4)からどうぞ。

# ■手順

### ・スキーマの変換
まずはOracleのスキーマをAurora MySQLのスキーマにコンバートします。

#### - 移行元の情報入力 
ダウンロードしたSCTを開きます。
「File」、「New Project」の順に選択し、Project nameに「DMSDemoProject」と入力します。![スライド19.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/70b94909-c2db-ae6c-1121-02ce86b7cc93.png)
「Add source」、「Oracle」、「Next」の順に選択します。![スライド20.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/fe7d4ff2-23c2-a2d1-35e9-272189493942.png)
Connection nameに「Amazon RDS for Oracle」、server nameは前の記事でメモした値が例えば
「jdbc:oracle:thin:@dmsdemo-oracledb-**XXX.XXX.ap-northeast-1.rds.amazonaws.com**:1521:ORCL」であれば太字部分のみ入力します。
最後にパスワードを入力します。初期設定のままであれば「oraadmin123」です。
その後「Test connection」を選択します。![スライド21.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/267deac7-ab79-ced0-43f3-11a554c6caac.png)
「Accept the risk and conrinue」を選択する。![スライド22.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/b9798bfb-a784-4f01-f0da-de6cfe41095d.png)
下記画面が出れば問題ないです。OKを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/47c953c5-f711-b16e-02d0-11d1ba6bdcb5.png)
「Connect」を選択します。![スライド23.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/f2e813c4-23f9-3712-6e27-3147818c20bf.png)


#### - 移行先の情報入力
移行元の情報が入力されたので、次は移行先の情報を入力します。
「Add source」、「Amazon Aurora(MySQL compatible)」、「Next」の順に選択。![スライド24.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/36b3471d-fef8-4397-ecf7-091f3b083c16.png)
Connection nameに「Amazon RDS for Oracle」、server nameは前の記事でメモした値が例えば
「dbc:mysql://**dmsdemo-auroracluster-XXX.cluster-XXX.ap-northeast-1.rds.amazonaws.com**:3306
」であれば太字部分のみを入力する。
最後にパスワードを入力します。初期設定のままであれば「auradmin123」です。
その後「Test connection」を選択します。![スライド25.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/c3c6d4f5-5dc0-2c49-af22-442da2d5fc51.png)
後は同様に「Accept the risk and conrinue」、「OK」、「Connect」の順に選択します。
これで移行元と移行先の情報入力が完了しました。![スライド26.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/c3324770-11ad-2471-a010-cb0d3aa323a6.png)
左のパネルから「HR」のみ、右のパネルから「Aurora MySQL database」のみ選択し、「Create mapping」を選択します。![スライド27.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/069f518e-bcb6-81ad-332c-8067ec8fb76c.png)
左のパネルの「HR」を右クリックし、「Create report」を選択します。![スライド28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/6134dfcd-ea34-2938-1b3f-cb1c4d8b438b.png)
すると移行評価レポートが発行されます。pdfやcsvファイルで保存が可能です。DB移行前に見れるのがポイントです。![スライド29.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/b0f5790b-8e8c-d0a7-633d-b9e7668191c7.png)
Action Itemsに戻り、左のパネルの「HR」を右クリックし、「Convert schema」を選択します。![スライド30.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/92880406-fba7-5544-d3aa-70ce50010595.png)
その後、右のパネルの「hr」から「Apply to database」、「Yes」と選択します。![スライド31.5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/3f192cd2-8aa8-f74a-46e3-b3fef739fb5b.png)
再び右のパネルの「hr」から「Refresh from Database」、「Yes」を選択します。![スライド31.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/eb9681b8-1048-7303-da8f-3d8d582fee7e.png)
これで移行元から移行先へスキーマが反映されました。
※[参考元ページ](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2aurora.steps.validateschemaconversion.html)では、移行先のDBに実際にスキーマが反映されたか確認するフェーズがありますが今回はスキップします。

### ・レプリケーションインスタンスの作成
AWS Database Migration Serviceへいき、レプリケーションインスタンスの作成を選択します。（画像無し）

下の画像の赤枠部分を基に以下のパラメータを入力し、
「レプリケーションインスタンスの作成」を選択します。

|項目名  |値  |
|---|---|
|名前|DMSdemo-repserver|
|説明|自由記入|
|マルチAZ|開発またはテストワークロード(シングルAZ)|
|Virtual private cloud(VPC) for IPv4|DMSdemo|

![スライド32.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/181f4e17-f0c5-e4b8-a191-ba590e1ec431.png)
![スライド33.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/3aeb9300-d70f-2f83-1bf0-9acee03c64a2.png)

すると10分ほどでレプリケーションインスタンスが作成されます。


### ・AWS DMSのソースエンドポイントとターゲットエンドポイントの作成します。
DMSのコンソールからエンドポイントの作成を選択します。
設定後、「エンドポイントの作成」を選択。![スライド34.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/ec8c98d8-fc1d-5c9c-03d6-78db614f1875.png)

下の画像の赤枠部分を基に以下のパラメータを入力し、
「レプリケーションインスタンスの作成」を選択します。

|項目名  |値  |
|---|---|
|エンドポイントタイプ|ソースエンドポイントにチェック<br>RDS DBインスタンスの選択にチェック<br>RDSインスタンスは先ほど作成したレプリケーションインスタンスを選択|
|エンドポイント識別子|Orasource|
|エンドポイントデータベースへのアクセス|アクセス情報を手動で提供する|
|パスワード|自分で設定したもの(デフォルトのままならoraadmin123)|

![スライド35.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/1ed4c4aa-6b16-8080-827e-6536105d791e.png)
するとソースエンドポイントが作成されます。
続いてターゲットエンドポイントを作成します。再びエンドポイントの作成を選択します。

下の画像の赤枠部分を基に以下のパラメータを入力し、
「レプリケーションインスタンスの作成」を選択します。

|項目名  |値  |
|---|---|
|エンドポイントタイプ|ターゲットエンドポイントにチェック|
|エンドポイント識別子|Aurtarget|
|ターゲットエンジン|Amazon Aurora MySQL|
|サーバー名|※あとで編集|
|ポート|3306|
|ユーザー名|※あとで編集|
|パスワード|※あとで編集|

![スライド36.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/9ee67b6c-95d7-895d-0e8e-29a53dc8a01c.png)![スライド37.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/c2d0759c-0890-6dcd-e445-1117f835d193.png)



### データベース移行タスクの作成と実行
データベース移行タスク選択
最後にタスクの作成![スライド38.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/24a345e8-11c2-397c-acc4-4f273306ec7f.png)
ステータスが実行中になる
ソース名はHR。ソーステーブル名は%。![スライド39.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/7f24dc0e-474d-4969-3b7c-cd5e2bf5aa97.png)


### ・移行後の確認
コンソールでテーブル統計みる![スライド40.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/44c8e984-031d-e301-db80-ff2f4aacf830.png)
SQL Workbench/Jを開き、Aurora Connectionを開いて、以下のように表示されれば以降は完了です。![スライド41.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/38abdc42-cf8e-a43d-8913-a1b404026979.png)

### ・リソースの削除
以下の手順通りにリソースを削除してください。

DMSのデータベース移行タスクを消去
DMSのエンドポイントを二つ削除
DMSのレプリケーションインスタンスを消去
CFnスタックを消去

以上で作業は完了です。お疲れ様でした。

# ■最後に
今回はDBS試験勉強の一環としてSCTとDMSを操作しました。問題を解いているだけでは中々イメージしづらい部分も、手を動かしてみるとすっと入ってくるなーと実感しました。ちなみに去年からSCTを使わずとも、DMS内でSchema Conversionが行えるようになってます。[詳しくはこちら](https://aws.amazon.com/jp/blogs/news/new-a-fully-managed-schema-conversion-in-aws-database-migration-service/)。それではまた次回の記事でお会いしましょう！

# 参考URL一覧
## AWS公式
・[『Step-by-Step Migration』](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2aurora.steps.html)
・[『AWS Schema Conversion Tool とは』](https://docs.aws.amazon.com/ja_jp/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
・[『Java ランタイム環境とは』](https://aws.amazon.com/jp/what-is/java-runtime-environment/)
## その他
・[『SQLクライアントはこれひとつでOK！ あらゆるDBMSで使える「SQL Workbench/J」をデータ解析で活用しよう』](https://codezine.jp/article/detail/10788)
・[『JDBC(e-Words)』](https://e-words.jp/w/JDBC.html)
・[『DBMS_STATS』](https://docs.oracle.com/cd/E57425_01/121/ARPLS/d_stats.htm)