Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'd like to know what is advantages of Streams over Advanced Replication. I wanted to use updatable materialized views on my project, but on one forum I read comment that if we don't use very old version of Oracle, it's better to use Streams.

Can you tell me what benefits I'll get if I use Streams, like simpler configuration, better conflicts resolving configuration, more stable work of replication or something else? Client database should be able to work offline.

share|improve this question

migrated from Jul 23 '12 at 14:39

This question came from our site for professional and enthusiast programmers.

The two major benefits tend to be efficiency and flexibility.

Streams is a much more efficient architecture. Rather than synchronously capturing changes in materialized view logs which adds overhead to the transaction, Streams mines the redo logs that are generated by the change in order to generate the change vector to send to the target system. That also allows the change to be replicated to the other system(s) much more quickly.

Streams is a much more flexible architecture. You can write your own custom apply processes which makes it relatively easy to inject additional processing or logging, to ignore certain changes, etc. You can send a Streams logical change record (LCR) to a JMS queue or to a non-Oracle system (though, of course, you'd need to write code to apply the LCR on the non-Oracle system).

share|improve this answer
Thanks for your reply, Is it possible to create something similar to materialized vies replication with Streams, like create table on client that contains data that consist of data joined from 2 server tables? – Sigora Jul 23 '12 at 16:19
@user1524201 - With a custom apply process, sure, you could. It would generally be easier, though, to replicate the tables (or some subset of rows and columns) locally and then create a view (or materialized view) locally. – Justin Cave Jul 23 '12 at 16:55
My customer don't want that all data be present on client. For example in one shop will be only products that belongs to this place and no more, but on server they store in one table. What did you mean by "With a custom apply process, sure, you could"? – Sigora Jul 23 '12 at 17:13
@user1524201 - If you are simply trying to replicate a subset of rows, you can use a subset rule… – Justin Cave Jul 23 '12 at 17:21
Also I need to be able to insert and update data. – Sigora Jul 23 '12 at 17:42

In Oracle® Streams Replication Administrator's Guide´11g Release 2 (11.2) there is a chapter Migrating Advanced Replication to Oracle Streams. It says:

Advanced Replication Elements that Cannot Be Migrated to Oracle Streams

Oracle Streams does not support the following:

  • Replication of changes to tables with columns of the following data types: BFILE, ROWID, and user-defined types (including object types, REFs, varrays, and nested tables)

  • Synchronous replication

If your current Advanced Replication environment uses these features, then these elements of the environment cannot be migrated to Oracle Streams. In this case, you might decide not to migrate the environment to Oracle Streams now, or you might decide to modify the environment so that it can be migrated to Oracle Streams.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.