6.5.3. Debezium Oracle コネクター設定プロパティーの説明

Debezium Oracle コネクターには、アプリケーションに適したコネクター動作を実現するために使用できる設定プロパティーが多数あります。多くのプロパティーにはデフォルト値があります。プロパティーに関する情報は、以下のように構成されています。

必要な Debezium Oracle コネクター設定プロパティー

以下の設定プロパティーは、デフォルト値がない場合は必須です。

プロパティー

デフォルト

説明

name

デフォルトなし

コネクターの一意名。同じ名前で再登録を試みると失敗します。(このプロパティーはすべての Kafka Connect コネクターに必要です)

connector.class

デフォルトなし

コネクターの Java クラスの名前。Oracle コネクターには、常に io.debezium.connector.oracle.OracleConnector の値を使用します。

tasks.max

1

このコネクターのために作成する必要のあるタスクの最大数。Oracle コネクターは常に単一のタスクを使用するため、この値を使用しません。そのため、デフォルト値は常に許容されます。

database.hostname

デフォルトなし

Oracle データベースサーバーの IP アドレスまたはホスト名。

database.port

デフォルトなし

Oracle データベースサーバーのポート番号 (整数)。

database.user

デフォルトなし

Oracle データベースサーバーに接続するためにコネクターが使用する Oracle ユーザーアカウントの名前。

database.password

デフォルトなし

Oracle データベースサーバーへの接続時に使用するパスワード。

database.dbname

デフォルトなし

接続するデータベースの名前。CDB + PDB モデルと連携する際に CDB 名である必要があります。

database.url

デフォルトなし

未処理のデータベースの JDBC URL を指定します。このプロパティーを使用すると、データベース接続を柔軟に定義できます。有効な値には、未処理の TNS 名および RAC 接続文字列が含まれます。

database.pdb.name

デフォルトなし

接続する Oracle のプラグ可能なデータベースの名前。このプロパティーは、コンテナーデータベース (CDB) インストールにのみ使用してください。

database.server.name

デフォルトなし

コネクターが変更をキャプチャーする Oracle データベースサーバーの namespace を識別および提供する論理名。設定した値は、コネクターが出力するすべての Kafka トピック名のプレフィックスとして使用されます。Debezium 環境のすべてのコネクターで一意となる論理名を指定します。英数字、ハイフン、およびアンダースコアが有効な文字です。

database.connection.adapter

logminer

データベースの変更をストリーミングするときにコネクターが使用するアダプター実装。以下の値を設定できます。

logminer(default)
コネクターはネイティブの Oracle LogMiner API を使用します。
xstream
コネクターは Oracle XStreams API を使用します。

snapshot.mode

Initial

コネクターがキャプチャーされたテーブルのスナップショットを取得するために使用するモードを指定します。以下の値を設定できます。

Initial
スナップショットには、キャプチャーされたテーブルの構造およびデータが含まれます。この値を指定して、キャプチャーされたテーブルからのデータの完全な表現でトピックを設定します。
schema_only
スナップショットには、キャプチャーされたテーブルの構造だけが含まれます。スナップショット後に発生する変更に対してのみ、コネクターにデータを取得させる場合は、この値を指定します。

スナップショットの完了後、コネクターはデータベースのやり直し (redo) ログから変更イベントの読み取りを続行します。

snapshot.select.statement.overrides

デフォルトなし

スナップショットに含めるテーブル行を指定します。
このプロパティーには、完全修飾テーブル(<schema_name.table_name>)のコンマ区切りリストが含まれます。各テーブルの select ステートメントは、id snapshot.select.statement.overrides.[<schema_name> ].[ <table_name>] で識別される、テーブルごとに 1 つずつ追加の設定プロパティーで指定されます。これらのプロパティーの値は、スナップショットの実行中に特定のテーブルからデータを取得するときに使用する SELECT ステートメントです。大規模な追加専用テーブルで可能なユースケースとしては、前のスナップショットが中断された場合にスナップショットの開始 (再開) 点を設定することが挙げられます。
注記: この設定はスナップショットにのみ影響します。ログの読み取り中にコネクターがキャプチャーするイベントには適用されません。

schema.include.list

デフォルトなし

変更をキャプチャーする対象とするスキーマの名前と一致する正規表現のコンマ区切りリスト (任意)。schema. include.list に含まれていないスキーマ名 は、変更をキャプチャーする対象から除外されます。デフォルトでは、システム以外のスキーマはすべて変更がキャプチャーされます。schema.exclude.list プロパティーを設定しないでください。LogMiner 実装を使用する環境では、POSIX 正規表現のみを使用する必要があります。

schema.exclude.list

デフォルトなし

変更をキャプチャーする対象としないスキーマの名前と一致する正規表現のコンマ区切りリスト (任意)。システムスキーマを除いて、名前が schema.exclude.list に含まれていないスキーマの変更がキャプチャーされます。schema.include.list プロパティーを設定しないでください。LogMiner 実装を使用する環境では、POSIX 正規表現のみを使用する必要があります。

table.include.list

デフォルトなし

監視するテーブルの完全修飾テーブル識別子と一致する正規表現の任意のコンマ区切りリスト。包含リストに含まれていないテーブルは、監視から除外されます。各識別子の形式は <schema_name>.<table_name> です。デフォルトでは、コネクターは監視される各データベースのシステム以外のテーブルをすべて監視します。このプロパティーは table.exclude.list と組み合わせて使用しないでください。LogMiner 実装を使用する場合は、このプロパティーと POSIX 正規表現のみを使用します。

table.exclude.list

デフォルトなし

監視から除外するテーブルの完全修飾テーブル識別子と一致する正規表現の任意のコンマ区切りリスト。コネクターは、除外リストで指定されていないすべてのテーブルから変更イベントをキャプチャーします。<schema_name>.<table_name> 形式を使用して、各テーブルの識別子を指定します。このプロパティーは table.include.list と組み合わせて使用しないでください。LogMiner 実装を使用する場合は、このプロパティーと POSIX 正規表現のみを使用します。

column.include.list

デフォルトなし

変更イベントメッセージの値に含める列の完全修飾名と一致する正規表現のコンマ区切りリスト (任意)。列の完全修飾名の形式は <Schema_name>.<table_name>.<column_name> です。プライマリーキー列は、このプロパティーを使用して明示的に値を含めなくても、イベントのキーに常に含まれます。このプロパティーを設定に含める場合は、column.exclude.list プロパティーを設定しないでください。

column.exclude.list

デフォルトなし

変更イベントメッセージの値から除外する列の完全修飾名と一致する正規表現のコンマ区切りリスト (任意)。列の完全修飾名の形式は <schema_name>.<table_name>.<column_name> です。プライマリーキー列は、このプロパティーを使用して明示的に値を除外しても、イベントのキーに常に含まれます。このプロパティーを設定に含める場合は、column.include.list プロパティーを設定しないでください。

column.mask.hash.<hashAlgorithm>.with.salt.<salt>

デフォルトなし

文字ベースの列の完全修飾名と一致する正規表現のコンマ区切りリスト (任意)。列の完全修飾名の形式は pdbName.schemaName.tableName.columnName.です。生成される変更イベントレコードでは、指定された列の値は仮名に置き換えられます。

仮名は、指定された hashAlgorithmsalt を適用すると得られるハッシュ化された値で構成されます。使用されるハッシュ関数に基づいて、参照整合性は維持され、列値は仮名に置き換えられます。サポートされるハッシュ関数は、Java Cryptography Architecture Standard Algorithm Name Documentationの MessageDigest section に説明されています。

以下の例では、CzQMA0cB5K が無作為に選択された salt になります。

column.mask.hash.SHA-256.with.salt.CzQMA0cB5K = inventory.orders.customerName, inventory.shipment.customerName

必要な場合は、仮名は自動的に列の長さに短縮されます。コネクター設定には、異なるハッシュアルゴリズムと salt を指定する複数のプロパティーを含めることができます。

使用される hashAlgorithm、選択された salt、および実際のデータセットによっては、結果として得られるデータセットが完全にマスクされないことがあります。

decimal.handling.mode

正確性

コネクターが NUMBER、DECIMAL、および NUMERIC 列の浮動小数点値を処理する方法を指定します。以下のオプションのいずれかを設定することができます。

exact (デフォルト)
バイナリー形式で変更イベントで表現され る java.math.BigDecimal 値を使用して正確に値を表します。
double
二重 値を使用して値を表します。二重 値を使用することは簡単ですが、精度が失われる可能性があります。
文字列
値をフォーマットされた文字列としてエンコードします。string オプションを使用することで消費は簡単ですが、実際のタイプに関するセマンティック情報が失われます。詳細は、10 進数型を参照してください。

event.processing.failure.handling.mode

fail

イベントの処理中にコネクターが例外に対応する方法を指定します。以下のオプションのいずれかを設定することができます。

fail
例外を伝搬し (問題のあるイベントのオフセットを示す)、コネクターが停止します。
warn
問題のあるイベントがスキップされます。問題のあるイベントのオフセットはログに記録されます。
skip
問題のあるイベントがスキップされます。

max.queue.size

8192

ブロッキングキューの最大サイズを指定する正の整数値。データベースログから読み取られた変更イベントは、Kafka に書き込まれる前にブロッキングキューに配置されます。このキューは、Kafka への書き込みが遅い場合や Kafka が利用できない場合などに、binlog リーダーにバックプレシャーを提供できます。キューに表示されるイベントは、コネクターが定期的に記録するオフセットには含まれません。max.batch.size プロパティーに指定された最大バッチサイズよりも大きい値を常に指定します。

max.batch.size

2048

このコネクターの各反復中に処理するイベントの各バッチの最大サイズを指定する正の整数値。

max.queue.size.in.bytes

0 (無効)

ブロッキングキューの最大サイズ (バイト単位) の long 値。この機能を有効にするには、値を正の long データ型に設定します。

poll.interval.ms

1000 (1 秒)

各反復処理の実行中に新しい変更イベントが表示されるまでコネクターが待機する時間 (ミリ秒単位) を指定する正の整数値。

tombstones.on.delete

true

削除 イベントの後に廃棄 (tombstone) イベントが続くかどうかを制御します。以下の値を使用できます。

true
削除操作ごとに、コネクターは 削除 イベントと後続の廃棄 (tombstone) イベントを出力します。
false
削除操作ごとに、コネクターは 削除 イベントのみを出力します。

ソースレコードの削除後に廃棄 (tombstone) イベントを出力すると (デフォルト動作)、Kafka は ログコンパクション が有効なトピックの削除された行のキーを共有するすべてのイベントを完全に削除できます。

message.key.columns

デフォルトなし

プライマリーキーをマップする完全修飾テーブルおよび列と一致する正規表現のセミコロン区切りリスト。
各項目(正規表現)は、カスタムキーを表す 列> の <fully-qualified table>:<a comma-separated list と一致する必要があります。
<pdbName>. <schemaName>. <tableName&gt; 形式を使用して完全修飾テーブルを定義します。

column.truncate.to.length.chars

デフォルトなし

長さが指定された文字数より長い場合に、変更イベントメッセージで省略する文字ベースの列の完全修飾名と一致する正規表現のコンマ区切りリスト (任意)。長さは正の整数として指定されます。設定には、異なる長さを指定する複数のプロパティーを含めることができます。<pdbName>. <schemaName>. <tableName>. <columnName&gt; 形式を使用して列の完全修飾名を指定します。

column.mask.with.length.chars

デフォルトなし

文字をアスタリスク(*)に置き換えることで、変更イベントメッセージの列名をマスクする正規表現のコンマ区切りリスト(任意)。プロパティー名に置き換える文字の数を指定します(例: column.mask.with.8.chars )。長さを正の整数またはゼロとして指定します。次に、マスクを適用する各文字ベースの列名についてリストに正規表現を追加します。以下の形式を使用して、p dbName.schemaName. tableName.columnName.columnName の完全修飾名を指定します。コネクター設定には、異なる長さを指定する複数のプロパティーを含めることができます。

column.propagate.source.type

デフォルトなし

出力された変更メッセージの該当するフィールドスキーマに元の型および長さをパラメーターとして追加する必要がある列の完全修飾名と一致する、正規表現のコンマ区切りリスト (任意)。スキーマパラメーター __debezium.source.column.type、__debezium.source.column.length、__ debezium.source.column.scale は、それぞれ元の型名と長さ(可変幅型)を伝播するために使用されます。シンクデータベースの対応する列を適切にサイズ調整するのに便利です。列の完全修飾名の形式は tableName.columnName または schemaName.tableName.columnName です。

datatype.propagate.source.type

デフォルトなし

出力された変更メッセージフィールドスキーマに元の型および長さをパラメーターとして追加する必要がある列のデータベース固有のデータ型名と一致する、正規表現のコンマ区切りリスト (任意)。スキーマパラメーター __debezium.source.column.type,__debezium.source.column.length および __debezium.source.column.scale は、それぞれ元の型名と長さ(variable-width タイプの場合)を伝播するために使用されます。シンクデータベースの対応する列を適切にサイズ調整するのに便利です。完全修飾データ型名の形式は tableName.typeName または schemaName.tableName.typeName です。PostgreSQL 固有のデータ型名のリストを参照してください。

heartbeat.interval.ms

0

コネクターがメッセージをハートビートトピックに送信する頻度をミリ秒単位で指定します。
このプロパティーを使用して、コネクターがソースデータベースから変更イベントを受信し続けるかどうかを判断します。また、コネクターが長期間キャプチャーされたテーブルで変更イベントが発生しない場合に、プロパティーを設定すると便利です。このような場合、コネクターは redo ログの読み取りを続行しますが、変更イベントメッセージは出力しないため、Kafka トピックのオフセットは変更されません。コネクターはデータベースから読み取る最新のシステム変更番号 (SCN) をフラッシュしないため、データベースは必要以上に redo ログファイルを保持する可能性があります。コネクターが再起動すると、長期間保持されるため、コネクターの送信する変更イベントの一部が冗長になることがあります。デフォルト値の 0 は、コネクターがハートビートメッセージを送信しないようにします。

heartbeat.topics.prefix

__debezium-heartbeat

コネクターがハートビートメッセージを送信するトピック名のプレフィックスの文字列を指定します。
トピックの名前は、<heartbeat.topics.prefix>.<server.name> パターンに従って名前が付けられます。

snapshot.delay.ms

デフォルトなし

コネクターが起動してからスナップショットを取得するまで待機する間隔をミリ秒単位で指定します。
このプロパティーを使用して、クラスターで複数のコネクターを起動する際にスナップショットが中断 (コネクターのリバランスが実行される可能性がある) しないようにします。

snapshot.fetch.size

2000

スナップショットの実行中に各テーブルから 1 度に読み取る必要がある行の最大数を指定します。コネクターは、指定したサイズの複数のバッチでテーブルの内容を読み取ります。

sanitize.field.names

コネクター設定が、key.converter または value.converter パラメーターを明示的に指定する場合は true です。これは、Avro を使用するためのパラメーターです。それ以外の場合は、デフォルトで false に設定されます。

Avro の命名要件に準拠するためにフィールド名を正規化するかどうかを指定します。詳しい情報は、Avro naming を参照してください。

provide.transaction.metadata

false

トランザクション境界でイベントを生成し、トランザクションメタデータでデータイベントエンベロープをエンリッチする場合は、プロパティーを true に設定します。

詳細は、「 トランザクションメタデータ 」を参照してください。

log.mining.strategy

redo_log_catalog

mining ストラテジーは、テーブルと列 ID を名前に解決するために Oracle LogMiner が特定のデータディクショナリーをビルドし、使用する方法を制御します。

redo_log_catalog - データディクショナリーをオンラインの redo ログに書き込みます。これにより、時間の経過と共により多くのアーカイブログが生成されるようになります。これにより、キャプチャーされたテーブルに対する DDL の変更を追跡することもできます。そのため、スキーマが頻繁に変更される場合、これが理想的です。
online_catalog - データベースの現在のデータディクショナリーを使用してオブジェクト ID を解決し、オンラインの redo ログに追加情報を書き込みません。
これにより、LogMiner の速度が大幅に向上しますが、その代わりに DDL の変更を追跡できません。キャプチャーされたテーブルのスキーマ変更が頻繁に行われないか、絶対に変更されない場合は、理想的な選択肢になります。

log.mining.batch.size.min

1000

このコネクターが redo/アーカイブログから読み取りを試みる最小 SCN 間隔サイズ。また、必要に応じてコネクターのスループットを調整するため、アクティブなバッチサイズもこの値によって増加/減少します。

log.mining.batch.size.max

100000

このコネクターが redo/アーカイブログから読み取る際に使用する最大 SCN 間隔サイズ。

log.mining.batch.size.default

20000

コネクターが redo/アーカイブログからデータを読み取るために使用する初期 SCN 間隔サイズ。

log.mining.sleep.time.min.ms

0

コネクターが redo/アーカイブログからデータを読み取った後に再びデータの読み取りを開始するまでスリープする最小の時間。値はミリ秒単位です。

log.mining.sleep.time.max.ms

3000

コネクターが redo/アーカイブログからデータを読み取った後に再びデータの読み取りを開始するまでスリープする最大の時間。値はミリ秒単位です。

log.mining.sleep.time.default.ms

1000

コネクターが redo/アーカイブログからデータを読み取った後に再びデータの読み取りを開始するまでスリープする初期の時間。値はミリ秒単位です。

log.mining.sleep.time.increment.ms

200

logminer からデータを読み取るときに、コネクターが最適なスリープ時間を調整するために使用する最大の増減時間。値はミリ秒単位です。

log.mining.view.fetch.size

10000

コネクターが LogMiner コンテンツビューから取得するコンテンツレコードの数。

log.mining.archive.log.hours

0

アーカイブログをマイニングするための、SYSDATE からの過去の時間数。デフォルト設定(0)を使用すると、コネクターはすべてのアーカイブログを最小にします。

log.mining.transaction.retention.hours

0

redo ログスイッチ間で長時間実行されるトランザクションを保持する時間を指定する正の整数値。0 に設定すると、コミットまたはロールバックが検出されるまでトランザクションが保持されます。

LogMiner アダプターは、実行中のすべてのトランザクションのメモリー内バッファーを維持します。トランザクションの一部となるすべての DML 操作は、コミットまたはロールバックが検出されるまでバッファーされるため、そのバッファーがオーバーフローしないように長時間実行されるトランザクションを回避する必要があります。設定されたこの値を超えるトランザクションは完全に破棄され、コネクターはトランザクションに含まれていた操作のメッセージを出力しません。

rac.nodes

デフォルトなし

Oracle Real Application Clusters (RAC) ノードのホスト名またはアドレスのコンマ区切りリスト。このフィールドは、Oracle RAC との使用を有効化するために必要です。

Debezium コネクターデータベース履歴設定プロパティー

Debezium では、コネクターがスキーマ履歴トピックと対話する方法を制御する database.history.* プロパティーのセットを提供します。

以下の表は、Debezium コネクターを設定するための database.history プロパティーについて説明しています。

表6.7 コネクターデータベース履歴設定プロパティー

プロパティーデフォルト説明

database.history.kafka.topic

 

コネクターがデータベーススキーマの履歴を保存する Kafka トピックの完全名。

database.history.kafka.bootstrap.servers

 

Kafka クラスターへの最初の接続を確立するために コネクターが使用するホストとポートのペアの一覧。このコネクションは、コネクターによって以前に保存されたデータベーススキーマ履歴の取得や、ソースデータベースから読み取られる各 DDL ステートメントの書き込みに使用されます。各ペアは、Kafka Connect プロセスによって使用される同じ Kafka クラスターを示す必要があります。

database.history.kafka.recovery.poll.interval.ms

100

永続化されたデータのポーリングが行われている間にコネクターが起動/回復を待つ最大時間 (ミリ秒単位) を指定する整数値。デフォルトは 100 ミリ秒です。

database.history.kafka.recovery.attempts

4

エラーでコネクターのリカバリーが失敗する前に、コネクターが永続化された履歴データの読み取りを試行する最大回数。データを受信しなかった後に待機する最大時間は recovery. attempts x recovery. poll.interval.ms です。

database.history.skip.unparseable.ddl

false

コネクターが不正または不明なデータベースのステートメントを無視するかどうか、または人が問題を修正するために処理を停止するかどうかを指定するブール値。安全なデフォルトは false です。スキップは、binlog の処理中にデータの損失や分割を引き起こす可能性があるため、必ず注意して使用する必要があります。

database.history.store.only.monitored.tables.ddl

今後のリリースで削除される予定です 。代わりに database.history.store.only.captured.tables.ddl を使用してください。

false

コネクターがすべての DDL ステートメントを記録するかどうかを指定するブール値。

True は、変更が Debezium によってキャプチャーされるテーブルに関連する DDL ステートメントのみを記録します。変更がキャプチャーされるテーブルを変更すると、不足しているデータが必要になる可能性があるため、不足しているデータが必要になる可能性があるため、注意して true に設定します。

安全なデフォルトは false です。

database.history.store.only.captured.tables.ddl

false

コネクターがすべての DDL ステートメントを記録するかどうかを指定するブール値。

True は、変更が Debezium によってキャプチャーされるテーブルに関連する DDL ステートメントのみを記録します。変更がキャプチャーされるテーブルを変更すると、不足しているデータが必要になる可能性があるため、不足しているデータが必要になる可能性があるため、注意して true に設定します。

安全なデフォルトは false です。

プロデューサーおよびコンシューマークライアントを設定するためのパススルーデータベース履歴プロパティー


Debezium は Kafka プロデューサーを使用して、データベース履歴トピックにスキーマ変更を書き込みます。同様に、コネクターの起動時に、Kafka コンシューマーを使用してデータベース履歴トピックから読み取ります。database.history. producer.* および database.history.consumer.* プレフィックスで始まるパススルー設定プロパティーのセットに値を割り当てて、Kafka プロデューサーおよびコンシューマークライアントの設定を定義します。パススループロデューサーおよびコンシューマーデータベース履歴プロパティーは、以下の例のようにこれらのクライアントが Kafka ブローカーとの接続をセキュリティー保護する方法など、さまざまな動作を制御します。

database.history.producer.security.protocol=SSL
database.history.producer.ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
database.history.producer.ssl.keystore.password=test1234
database.history.producer.ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
database.history.producer.ssl.truststore.password=test1234
database.history.producer.ssl.key.password=test1234

database.history.consumer.security.protocol=SSL
database.history.consumer.ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
database.history.consumer.ssl.keystore.password=test1234
database.history.consumer.ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
database.history.consumer.ssl.truststore.password=test1234
database.history.consumer.ssl.key.password=test1234

Debezium は、プロパティーを Kafka クライアントに渡す前に、プロパティー名から接頭辞を取り除きます。

Kafka プロデューサー設定プロパティー および Kafka コンシューマー設定プロパティー の詳細は、Kafka のドキュメントを参照してください。

Debezium コネクターパススルーデータベースドライバー設定プロパティー

Debezium コネクターは、データベースドライバーのパススルー設定を提供します。パススルーデータベースプロパティーは、プレフィックス database.* で始まります。たとえば、コネクターは database.foobar=false などのプロパティーを JDBC URL に渡します。

データベース履歴クライアントのパススループロパティー の場合と同様に、Debezium はプロパティーからプレフィックスを取り除き、データベースドライバーに渡します。