DMSでの継続的レプリケーション

01

  1. EC2(Windows)上の DBeaver のOracle - handson source databaseを右クリックし SQL Editor を開きます。

以下の SQL を実行して、DMS_SAMPLE.TICKET_PURCHASE_HIST テーブルの件数を数えます(最初は 0 件が返ります)。

select count(*) from dms_sample.ticket_purchase_hist;

パート 2 実施済みの方は 1 件以上の数値が表示される可能性があります。


02

  1. DBeaver のPostgreSQL - handson target databaseを右クリックし SQL Editor を開きます。

  2. 以下の SQL を実行し、PostgreSQL 側の dms_sample.ticket_purchase_hist テーブルの件数を数えます。

   select count(*) from dms_sample.ticket_purchase_hist;
  • こちらは、ソース側で計測した件数と同じものが表示されているはずです。

03

  1. DBeaver に RDS for Oracle(Source)の接続をもう 1 つ作成します。

  2. Database Navigator ペインで Oracle - handson source database を右クリックします。

  3. コンテキストメニューからCopyを選択します。

  4. Database navigator ペインの空白エリアで右クリックします。

  5. Pasteを選択します。


  • プロシージャで擬似トランザクションをソース側に発生させます。
  1. Oracle - handson source database 1 > Schemas > DMS_SAMPLE > Tables > MLB_DATA などが表示されるか確認します。

  2. 問題がなければ Oracle - handson source database 1 を右クリックします。

  3. SQL Editor を開き以下の SQL を実行してください。

call dms_sample.ticketmanagement.generateticketactivity(1, 1000);
  1. Oracle の TICKET_PURCHASE_HIST テーブルに支払い履歴が INSERT され続けます。

  2. このプロシージャは、最後にキャンセルします。

  3. Oracle - handson source database の SQL Editor で以下の SQL を実行して、TICKET_PURCHASE_HIST テーブルの件数を数え、INSERT され続けていることを確認します。

select count(*) from dms_sample.ticket_purchase_hist;

04

  1. 上記 Oracle 上でのトランザクションは DMS により 5 秒おきに PostgreSQL にレプリケーションされます。

  2. PostgreSQL の SQL Editor で以下の SQL を実行して、ticket_puchase_hist テーブルの行数を数えます。

select count(*) from dms_sample.ticket_purchase_hist;
  1. 5 秒間隔で結果が増え、その結果は Oracle のものよりわずかに少ないことが確認できます。

  2. つまり、Oracle の TICKET_PURCHASE_HIST テーブルへの INSERT が、PostgreSQL の ticket_purchase_hist テーブルに非同期反映されていることを意味します。


05

  1. ローカル PC のブラウザから DMS のマネージメントコンソールのテーブル統計タブをクリックします。

  2. ticket_purchase_hist テーブルの挿入列が増え、SPORTING_EVENT_TICKET テーブルの更新列が増えていくことが確認できます。


06

  1. EC2(Windows)上 DBeaver の Oracle - handson source database 1 の SQL Editor に戻ります。

  2. プロシージャをキャンセルします。

  3. プロシージャのキャンセルを実行することで、ソース(Oracle)への更新が止まり、DMS によりソートとターゲットのデータが完全に同期されます。

  4. その後、通常はアプリケーションの接続先を移行先(この場合は PostgreSQL)に変更し、サービスを再開することで最小限のダウンタイムでデータベースの移行を行うことが可能になります。