11g中引入了新的Streams特性:Synchronous Capture同步捕获。不同于传统Streams的捕获机制,Synchronous Capture同步捕获不基于归档日志或者在线重做日志来捕捉数据库中的变化。取而代之,同步捕获使用另一种内部机制来捕捉数据库中的变化并对这些捕获的变化实施格式化,最终形成一条LCR(Logical change Record)。这些由同步捕获捕捉到得记录被称为persistent LCRs。同步捕捉总是将记录入列(enqueue)到一个提交时队列中(commit-time queue)以保证事务的顺序准确。
即便我们采用了同步捕捉来替代传统的捕捉方式,propagation和apply并不会有什么不同,这我们无需担忧。
同步捕获可以捕捉由UPDATE、INSERT、DELETE和MERGE四种DML语句产生的DML变化。因为其不依赖于重做和归档的特性,其甚至可以被用在非归档模式下,并且不要求打开任何追加日志。
同步捕捉可能适用于以下几种情景中:
无法使用基于重做(redo-based)的传统捕获方式(例如在Oracle database Standards Edition中) 无法使用重做或基于日志挖掘相关的功能,但可以用到其他Streams进程 要求在用户事务发生的同时执行捕获 捕获的变化被要求存放在磁盘上的队列中 克隆较少更新的表上的数据
同步捕获支持对以下数据类型列的DML变更捕捉:
VARCHAR2 NVARCHAR2 NUMBER FLOAT DATE BINARY_FLOAT BINARY_DOUBLE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND RAW CHAR NCHAR UROWID
需要注意的是不同于传统捕获方式,同步捕获不能使用如ADD_SCHEMA_RULES或ADD_GLOBAL_RULES存储过程建立。同步捕获仅能通过ADD_TABLE_RULES建立白名规则(table rule with a positive rule set),而不支持建立黑名规则(negative . . . → Read More: 11g新特性:Streams同步捕获
最新评论