重要
このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。
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 は以下の手順を実行する必要があります。
次のコマンドを実行して、データベースのディクショナリを再構築します。
EXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
DDL の変更(たとえば
ALTER TABLE CUSTOMERS ADD CITY VARCHAR(50);
)を実行します。次のコマンドを実行して、ディクショナリを再構築します。
EXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);