目前在用Streams做数据复制。前一段时间忙别的,没有时间来认真研究。现在打算学习一下,顺便把平时没有注意到的东西,列一下。
1、 Capture分两种。一种是capture process从redo log里面看到变化,生成LCR,放到queue里面,这个叫“implicit capture”。另一种是user and applications手工地把消息放到queue里面,这个叫“explicit capture”,此时的消息叫做user-enqueued messages, 可以是LCR或者是用户自定义的消息。
user-enqueued message,并非只能由user, application来加入,只是在capture的时候是这样。文档的标准解释为:
user-enqueued message
A message that was enqueued explicitly by an application, a user, or an apply process. A user-enqueued message can contain a logical change record (LCR) or a user message.
2、 Messaging Client只能消费user-enqueued LCRs or user-enqueued messages。
3、 一个capture进程只能往一个ANYDATA queue加入消息。而且,capture进程加入的消息,总是存放在buffered queue。不过也有可能会被放到queue table,文档说明如下:
Messages in a buffered queue can spill from memory into the queue table if they have been staged in the buffered queue for a period of time without being dequeued, or if there is not enough space in memory to hold all of the messages.
4、 一个ROW LCR可以有事务控制语句。
A captured row LCR can also contain transaction control statements. These row LCRs contain directives such as COMMIT and ROLLBACK. Such row LCRs are internal and are used by an apply process to maintain transaction consistency between a source database and a destination database.
5、 对一张表来说,不是什么样的operation都可以捕获,也不是所有的数据类型都支持。还有就是这三个schema,capture进程是不会关注的:SYS, SYSTEM, or CTXSYS schemas。
本文探讨了使用Streams进行数据复制的技术细节。重点介绍了两种捕获方式:隐式捕获与显式捕获的区别;消息传递客户端的功能限制;捕获进程的工作原理及约束条件;以及ROW LCR中的事务控制等内容。
279

被折叠的 条评论
为什么被折叠?



