流的应用是事件的消费过程,这章主要描述和应用进程有关的概念。
应用进程概述
流应用进程是一个可选的ORACLE后台进程,主要用于将LCR或用户消息出队列,然后或者直接应用,或者将其作为参数传给用户定义过程。对于应用进程出队列的LCR信息,可以是DML信息也可以是DDL信息,这些LCR应用进程可以直接应用到目标数据库。应用进程出队列的用户定义事件是SYS.AnyData类型的,可以包含用户事件或用户创建的LCR。
应用进程应用事件时,是以应用用户应用到数据库中的。应用用户将会应用所有的DML语句和DDL语句,并调用用户定义的应用过程。
应用规则
应用进程在应用修改时会基于用户定义的规则。每个规则会指明应用修改的数据库对象和允许的修改类型。可以在下列等级指定应用规则:
表级规则:对指定表应用DML或DDL修改。子集规则:对指定表的一部分数据的修改。
方案规则:对指定方案下的对象应用DML或DDL修改。
全局规则:应用队列中的所有DML和DDL修改。
应用进程事件处理
应用进程处理捕获或用户入队事件:
一个单独的应用进程可以应用捕获事件或用户入队事件,但不能同时应用二者。如果目标数据库的队列中同时包含捕获事件和用户入队事件,则目标数据库至少需要两个应用进程来分别处理事件。
当使用DBMS_STREAMS_ADM包中的过程创建应用进程,则应用进程只应用捕获事件。如果使用DBMS_APPLY_ADM包中的CREATE_APPLY过程,可以通过APPLY_CAPTURED参数设置应用进程应用捕获事件还是应用用户入队事件。
事件的起源数据库对于处理捕获事件的应用进程十分重要,但对于处理用户入队事件的应用进程没有意义。对于捕获事件,源数据库是指变化产生在重做日志文件中的数据库。应用进程必须确定捕获LCR的源数据库,以此来保证应用的修改来自一个源数据库,而数据库管理员需要保证一个应用进程应用的修改来自一个源数据库的一个捕获进程。而对于用户入队事件,应用进程忽略源数据库信息,即使这个事件是用户入队LCR。一个应用进程可以应用源自不同数据库的用户入队事件。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-663495/ ,如需转载,请注明出处,否则将追究法律责任。