重要

このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。

Oracle Database における DDL 変更への対応

Oracle Database 19c より前にリリースされた Oracle Database の場合、v1.3.0 以前の Oracle CDC Source Connector では、オンラインカタログのみを使用してスキーマを理解し、レコードを解析します。この処理はほとんどの場合に機能しますが、コネクターが既存のスキーマに基づいてすべてのレコードを処理する前に DDL の変更(たとえば ALTER TABLE CUSTOMERS ADD CITY VARCHAR(50);)が発生すると、LogMiner のディクショナリの不一致が原因で、それ以上レコードを解析できなくなる可能性があります。この場合、start.from=force_current を使用してコネクターを再起動するか(解析できなかったレコードを失う可能性があります)、または start.from=snapshot を使用して別の名前で新しいコネクターを作成することができます。v1.3.1 以降の Oracle CDC Source Connector を使用すると、コネクターはオンラインカタログとアーカイブ済み Redo ログを使用して DDL の変更に対処します。このページの以下の情報も参照してください。

Confluent では現在、DDL 操作を実行して、CDC レコードの低レイテンシデリバリーを実現しながら、テーブルスキーマを進化させることができるオプションを提供しています。これにより、DDL の変更に別途対応できるようになりました。

ディクショナリの処理モードを構成する

Oracle CDC Connector は、自動構成切り替え機能を利用し、oracle.dictionary.mode 構成プロパティを使用して DDL の変更を処理します。このプロパティによって、使用するディクショナリモードを切り替えることができます。ディクショナリの処理モードは、以下のモードのいずれかに設定できます。

  • auto: デフォルトはこのモードです。コネクターでは、テーブルスキーマを進化させる DDL ステートメントが検出されるまで、オンラインカタログのディクショナリを使用します。DDL ステートメントが検出された時点で、コネクターでは、アーカイブ済み redo ログのディクショナリの使用を開始します。DDL ステートメントが処理されると、コネクターではオンラインカタログの使用に戻ります。DDL ステートメントが想定される場合は、このモードを使用します。

  • online: コネクターでは、常にオンラインディクショナリカタログを使用します。online モードでは DDL ステートメントはサポートされていないため、DDL ステートメントが想定されない場合は、online モードを使用してください。

  • redo_log: コネクターでは、常にアーカイブ済み redo ログのディクショナリカタログを使用します。オンライン redo ログにアクセスできない場合は、このモードを使用してください。

    注釈

    CDC イベントは、オンラインログからアーカイブされるまで遅延されます。

auto モードまたは redo_log モードで変更を行う

auto モードまたは redo_log モードで DDL の変更を行うには、DBA は以下の手順を実行する必要があります。

  1. 次のコマンドを実行して、データベースのディクショナリを再構築します。

    EXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
    
  2. DDL の変更(たとえば ALTER TABLE CUSTOMERS ADD CITY VARCHAR(50);)を実行します。

  3. 次のコマンドを実行して、ディクショナリを再構築します。

    EXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);