Data Integration は、ApsaraDB for OceanBase、MySQL、Oracle、PolarDB、PolarDB-X 2.0 などのソースから MaxCompute へのデータベース全体のリアルタイム同期をサポートしています。このトピックでは、Oracle をソース、MaxCompute を宛先として、Oracle データベース全体の完全なデータと増分データを MaxCompute Delta Table に同期する方法について説明します。
背景
Data Integration の Oracle データベース全体のリアルタイム同期機能を使用すると、ソース Oracle データベースのすべてのデータを MaxCompute Delta Table に同期できます。Delta Table は、パーティションテーブルまたは非パーティションテーブルにすることができます。初回の完全同期の後、タスクは増分データの変更をリアルタイムで同期します。同期されたデータは、分レベルのレイテンシーでほぼリアルタイムに表示されます。現在、Delta Table に同期された増分データは、最短 5 分で表示されます。
MaxCompute Delta Table の詳細については、「準リアルタイムデータウェアハウスの概要」をご参照ください。
前提条件
サーバーレスリソースグループを購入します。
Oracle データソースと MaxCompute データソースを作成します。詳細については、「データソースの設定」をご参照ください。
Oracle: アーカイブ ログ機能を有効にします。詳細については、「Oracle 環境の準備」をご参照ください。
MaxCompute: Decimal データ型は MaxCompute V2.0 でのみサポートされます。データを同期する前に、MaxCompute V2.0 データ型を有効にします。詳細については、「V2.0 データ型」をご参照ください。
リソースグループとデータソース間のネットワーク接続を確立します。詳細については、「ネットワーク接続ソリューション」をご参照ください。
制限事項
この機能は、テナントレベルのスキーマ構文を使用する MaxCompute データソースをサポートしていません。
ソースデータから MaxCompute 外部テーブルへの同期はサポートされていません。
手順
1. 同期タスクのタイプを選択する
Data Integration ページに移動します。
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[Go To Data Integration] をクリックします。
左側のナビゲーションウィンドウで、[Sync Task] をクリックします。ページの上部で、[Create Sync Task] をクリックしてタスク作成ページを開きます。次の基本情報を設定します。
ソースと宛先:
OracleからMaxCompute新しいタスク名: 同期タスクのカスタム名を入力します。
同期タイプ:
データベース全体のリアルタイム同期。同期ステップ: [完全同期] と [増分同期] を選択します。
2. ネットワークとリソースを設定する
[ネットワークとリソースの設定] セクションで、同期タスクの [リソースグループ] を選択します。[タスクリソースの使用量] に特定の CU 数を割り当てることもできます。
[ソースデータソース] で、
Oracleデータソースを選択します。[宛先データソース] で、MaxComputeデータソースを選択します。次に、[接続性テスト] をクリックします。
ソースデータソースと宛先データソースが接続されていることを確認したら、[次へ] をクリックします。
3. 同期するデータベースとテーブルを選択する
[ソースデータベースとテーブル] セクションで、同期するソーステーブルを選択します。
アイコンをクリックして、右側の [選択したデータベースとテーブル] リストに移動します。

4. ターゲットテーブルのマッピングを設定する
データを同期するテーブルを選択すると、選択したテーブルが [宛先テーブルのマッピングルール] セクションに自動的に表示されます。宛先テーブルのプロパティはマッピング待ちの状態です。ソーステーブルと宛先テーブル間のマッピングを手動で定義して、データの読み取りと書き込みの関係を決定する必要があります。次に、[操作] 列の [リフレッシュ] をクリックします。ソーステーブルと宛先テーブル間のマッピングを直接リフレッシュできます。宛先テーブルに関連する設定を構成した後に、ソーステーブルと宛先テーブル間のマッピングをリフレッシュすることもできます。
同期するテーブルを選択し、[一括リフレッシュマッピング] をクリックします。マッピングルールを設定しない場合、デフォルトのテーブル命名規則は
${SourceDBName}_${TableName}です。宛先に同じ名前のテーブルが存在しない場合、新しいテーブルが自動的に作成されます。[ターゲットテーブル名のマッピングをカスタマイズ] 列で、[編集] をクリックしてターゲットテーブルの命名規則をカスタマイズします。
組み込み変数と手動で入力した文字列を組み合わせて、最終的なターゲットテーブル名を作成できます。組み込み変数を編集することもできます。たとえば、ソーステーブル名にサフィックスを追加してターゲットテーブル名を形成する新しいテーブル命名規則を作成できます。
データを MaxCompute Delta Table に同期するには、ターゲットテーブルのプライマリキーを指定する必要があります。デフォルトでは、ソーステーブルのプライマリキーが使用されます。ソーステーブルにプライマリキーがない場合は、カスタムのプライマリキー列を指定できます。プライマリキーを指定しない場合、同期タスクは保存できません。
デフォルトでは、自動的に作成される Delta Table のバケット数は 16 です。ターゲットテーブルマッピングの [テーブルバケット数] フィールドで別の数を指定できます。
既存のテーブルのバケット数は変更できません。テーブルのバケット数は、テーブルデータが分割されるバケットの数を決定します。クエリ、書き込み、データマージなどの操作は、バケットレベルで同時に実行できます。ただし、バケットが多いと小さいファイルの数が増加する可能性があります。要件に基づいてバケット数を設定してください。詳細については、「テーブル操作」および「データストレージとバケッティング」をご参照ください。
デフォルトでは、自動的に作成される Delta Table の既存データクエリ時間は 0 時間です。ターゲットテーブルマッピングの [既存データクエリ時間] フィールドで別の時間を指定できます。
既存のテーブルの既存データクエリ時間は変更できません。この設定は、既存データのバージョンをクエリできる時間範囲を決定します。指定された時間範囲外の既存データはクエリできません。時間範囲が長いほど、保持される既存データが多くなり、ストレージコストが増加します。要件に基づいてこのパラメーターを設定してください。詳細については、「テーブル操作」および「Time Travel」をご参照ください。
a. フィールドのデータ型マッピングを変更する
[宛先テーブルのマッピングルール] セクションの右上隅にある [フィールドデータ型のマッピングを編集] をクリックして、ビジネス要件に基づいてソースフィールドと宛先フィールド間のデータ型マッピングを設定できます。設定が完了したら、[適用してマッピングをリフレッシュ] をクリックします。
b. 宛先テーブルのスキーマを変更してテーブルにフィールドを追加し、フィールドに値を割り当てる
宛先テーブルが [作成予定] 状態の場合、次の手順を実行してテーブルにフィールドを追加し、フィールドに値を割り当てることができます。
1 つ以上の宛先テーブルにフィールドを追加します。
単一の宛先テーブルにフィールドを追加する: フィールドを追加する宛先テーブルを見つけ、[宛先テーブル名] 列の
アイコンをクリックします。 表示されるダイアログボックスで、フィールドを追加します。一度に複数の宛先テーブルにフィールドを追加する: 一度にフィールドを追加する宛先テーブルを選択し、ページの下部にある [一括変更] をクリックしてから、[宛先テーブルスキーマ - フィールドの一括変更と追加] をクリックします。
フィールドに値を割り当てます。次のいずれかの操作を実行して、フィールドに値を割り当てることができます。
単一の宛先テーブルに追加されたフィールドに値を割り当てる: 新しく追加されたフィールドに値を割り当てる宛先テーブルを見つけ、[値の割り当て] 列の [設定] をクリックします。[追加フィールド] ダイアログボックスで、フィールドに値を割り当てます。
一度に複数の宛先テーブルに追加されたフィールドに値を割り当てる: 新しく追加されたフィールドに値を割り当てたい宛先テーブルを選択し、ページ下部の [一括変更] をクリックし、[値の割り当て] をクリックして、選択した宛先テーブルの同じフィールドに一度に値を割り当てます。
説明
アイコンをクリックして値の割り当て方法を切り替え、宛先テーブルに追加されたフィールドに定数と変数を割り当てることができます。
c. DML 処理ルールを設定する
Data Integration は、デフォルトの DML 処理ルールを提供します。ビジネス要件に基づいて、宛先テーブルの DML 処理ルールを設定することもできます。
単一の宛先テーブルの DML 処理ルールを設定する: DML 処理ルールを設定する宛先テーブルを見つけ、[DML ルールの設定] 列の [設定] をクリックして、テーブルの DML 処理ルールを設定します。
一度に複数の宛先テーブルの DML 処理ルールを設定する: DML 処理ルールを設定する宛先テーブルを選択し、ページ下部の [一括変更] をクリックし、[DML ルールの設定] をクリックします。
4. 完全同期を実行する
同期タスクのタイプを選択したときに [同期ステップ] で [完全同期] を選択した場合、このページで特定のテーブルの完全同期を無効にすることもできます。
5. アラートルールを設定する
同期タスクの失敗によるビジネスデータ同期の遅延を防ぐために、同期タスクにさまざまなアラートルールを設定できます。
ページの右上隅にある [アラートルールの設定] をクリックして、[アラートルールの設定] パネルに移動します。
[アラートルールの設定] パネルで、[アラートルールの追加] をクリックします。[アラートルールの追加] ダイアログボックスで、パラメーターを設定してアラートルールを構成します。
説明このステップで設定したアラートルールは、同期タスクによって生成されるリアルタイム同期サブタスクに対して有効になります。同期タスクの設定が完了したら、「リアルタイム同期タスクの管理」を参照してリアルタイム同期タスクページに移動し、リアルタイム同期サブタスクに設定されたアラートルールを変更できます。
アラートルールを管理します。
作成されたアラートルールを有効または無効にできます。アラートの重大度レベルに基づいて、異なるアラート受信者を指定することもできます。
6. 詳細パラメーターを設定する
ビジネス要件に基づいて、同期タスクに設定された特定のパラメーターの値を変更できます。たとえば、[最大読み取り接続数] パラメーターに適切な値を指定して、現在の同期タスクがソースデータベースに過度の圧力をかけ、データ生成に影響が及ぶのを防ぐことができます。
予期しないエラーやデータ品質の問題を防ぐために、パラメーターの値を変更する前に、パラメーターの意味を理解することをお勧めします。
設定ページの右上隅にある [詳細パラメーターの設定] をクリックします。
[詳細パラメーターの設定] パネルで、目的のパラメーターの値を変更します。
7. DDL 処理ルールを設定する
DDL 操作はソースで実行される場合があります。ページの右上隅にある [DDL 機能の設定] をクリックして、ビジネス要件に基づいてソースからの DDL メッセージを処理するルールを設定できます。
詳細については、「DDL メッセージを処理するルールの設定」をご参照ください。
8. リソースグループの表示と変更
ページの右上隅にある [リソースグループの設定] をクリックして、現在の同期タスクの実行に使用されるリソースグループを表示および変更できます。
9. 同期タスクを実行する
同期タスクの設定が完了したら、ページの下部にある [完了] をクリックします。
[Data Integration] ページの [ノード] セクションで、作成した同期タスクを見つけ、[操作] 列の [開始] をクリックします。
[タスク] セクションで同期タスクの [名前または ID] をクリックし、同期タスクの詳細な実行プロセスを表示します。
同期タスクの O&M
タスクの実行ステータスを表示する
同期タスクを作成した後、作成した同期タスクのリストとその基本情報を同期タスクページで表示できます。

[操作] 列で、同期タスクを [開始] または [停止] できます。[その他] で、[編集] や [表示] などの他の操作を実行できます。
実行中のタスクについては、[実行概要] セクションで基本的な実行ステータスを表示できます。概要の特定のエリアをクリックして実行の詳細を表示することもできます。

Oracle データベース全体から MaxCompute へのリアルタイム同期タスクは、次の 3 つのステップで構成されます。
スキーマ移行: このステップには、ターゲットテーブルの作成方法 (既存のテーブルまたは自動作成) が含まれます。テーブルが自動的に作成される場合、DDL 文が表示されます。
完全初期化: このステップには、オフラインで同期されたテーブル、同期の進行状況、書き込まれた行数に関する情報が含まれます。
リアルタイムデータ同期: このステップには、リアルタイムの進行状況、DDL レコード、DML レコード、アラート情報など、リアルタイム同期に関する統計が含まれます。
同期タスクを再実行する
特殊なケースでは、ソースにテーブルを追加またはソースからテーブルを削除した場合、または宛先テーブルのスキーマまたは名前を変更した場合、同期タスクの [操作] 列の [その他] をクリックし、[再実行] をクリックして変更後にタスクを再実行できます。再実行プロセス中、同期タスクは、新しく追加されたテーブルから宛先へのデータのみ、またはスキーマまたは名前が変更された宛先テーブルにマッピングされたソーステーブルからのデータのみを同期します。
タスクの設定を変更せずに同期タスクを再実行する場合は、[操作] 列の [その他] をクリックし、[再実行] をクリックしてタスクを再実行し、完全同期と増分同期を再度実行します。
タスクにテーブルを追加またはタスクからテーブルを削除した後に同期タスクを再実行する場合は、変更後に [完了] をクリックします。この場合、同期タスクの [操作] 列に [更新を適用] が表示されます。[更新を適用] をクリックして、システムに同期タスクの再実行をトリガーします。再実行プロセス中、同期タスクは新しく追加されたテーブルから宛先にデータを同期します。元のテーブルのデータは再度同期されません。