

レプリケーションシステムの設計のために、OracleのCDCについて調べています。

[ドキュメント](http://docs.oracle.com/cd/B28359_01/server.111/b28313/cdc.htm#i1025452)を読んで、同期型
(synchronous) のCDCでは対象テーブルにトリガーが仕込まれ、変更がコミットされるタイミングでchange
tableが更新されるというところまで理解しました。

> The synchronous mode uses triggers on the source database to capture change
> data. [...] The change tables are populated when DML operations on the
> source table are committed.  
>
> ([ソース](http://docs.oracle.com/cd/B28359_01/server.111/b28313/cdc.htm#i1025452))

また、複数のchange tableデータをまとめたものであるchange setは、含まれる変更が一貫性のあるものであることを保証されている
(中でちゃんとjoinできる)、というのも理解しました。

> A change set is a logical grouping of change data that is guaranteed to be
> transactionally consistent and that can be managed as a unit.  
>
> ([ソース](http://docs.oracle.com/cd/B28359_01/server.111/b28313/cdc.htm#i1025453))

これは、トランザクション1個につきchange setが1つ作られるということなのでしょうか?
ドキュメントの他の箇所を読んでもその点がいまいちはっきり書かれていません。

1つのchange setに複数のトランザクションによる変更が含まれる、という状況は (単なる想像ですが)
なさそうですが、1つのトランザクションが複数のchange setに分かれる、ということはありえるのでしょうか
(それもないような気がしますが、確信ができない)。

データをいじって実際に試せる権限がなく、概念上の理解をしっかり固めたいと思っています。


CC BY-SA 3.0
2014-12-19T12:53:29.417
2149
2014-12-19T12:53:29.417
30
question
oracle-cdc oracle
Oracleの同期型CDCにおけるchange setは、トランザクションによる変更一式と完全に一対一対応するのですか?