以下の SQL を実行して、DMS_SAMPLE.TICKET_PURCHASE_HIST テーブルの件数を数えます(最初は 0 件が返ります)。
select count(*) from dms_sample.ticket_purchase_hist;
パート 2 実施済みの方は 1 件以上の数値が表示される可能性があります。
DBeaver のPostgreSQL - handson target databaseを右クリックし SQL Editor を開きます。
以下の SQL を実行し、PostgreSQL 側の dms_sample.ticket_purchase_hist テーブルの件数を数えます。
select count(*) from dms_sample.ticket_purchase_hist;
DBeaver に RDS for Oracle(Source)の接続をもう 1 つ作成します。
Database Navigator ペインで Oracle - handson source database を右クリックします。
コンテキストメニューからCopyを選択します。
Database navigator ペインの空白エリアで右クリックします。
Pasteを選択します。
Oracle - handson source database 1 > Schemas > DMS_SAMPLE > Tables > MLB_DATA などが表示されるか確認します。
問題がなければ Oracle - handson source database 1 を右クリックします。
SQL Editor を開き以下の SQL を実行してください。
call dms_sample.ticketmanagement.generateticketactivity(1, 1000);
Oracle の TICKET_PURCHASE_HIST テーブルに支払い履歴が INSERT され続けます。
このプロシージャは、最後にキャンセルします。
Oracle - handson source database の SQL Editor で以下の SQL を実行して、TICKET_PURCHASE_HIST テーブルの件数を数え、INSERT され続けていることを確認します。
select count(*) from dms_sample.ticket_purchase_hist;
上記 Oracle 上でのトランザクションは DMS により 5 秒おきに PostgreSQL にレプリケーションされます。
PostgreSQL の SQL Editor で以下の SQL を実行して、ticket_puchase_hist テーブルの行数を数えます。
select count(*) from dms_sample.ticket_purchase_hist;
5 秒間隔で結果が増え、その結果は Oracle のものよりわずかに少ないことが確認できます。
つまり、Oracle の TICKET_PURCHASE_HIST テーブルへの INSERT が、PostgreSQL の ticket_purchase_hist テーブルに非同期反映されていることを意味します。
ローカル PC のブラウザから DMS のマネージメントコンソールのテーブル統計タブをクリックします。
ticket_purchase_hist テーブルの挿入列が増え、SPORTING_EVENT_TICKET テーブルの更新列が増えていくことが確認できます。
EC2(Windows)上 DBeaver の Oracle - handson source database 1 の SQL Editor に戻ります。
プロシージャをキャンセルします。
プロシージャのキャンセルを実行することで、ソース(Oracle)への更新が止まり、DMS によりソートとターゲットのデータが完全に同期されます。
その後、通常はアプリケーションの接続先を移行先(この場合は PostgreSQL)に変更し、サービスを再開することで最小限のダウンタイムでデータベースの移行を行うことが可能になります。