Throughout our discussion on the Streams processes, we mention the Advanced Queues used by Streams to transport changes. These queues are either in-memory (buffered queues) or tables on disk (persistent queues). Oracle Streams uses both buffered queues and persistent queues. A buffered queue can only be an ANYDATA
queue, while a persistent queue can be an ANYDATA
or a TYPED
queue.
ANYDATA
and TYPED
refer to the payload datatype of the message handled by the queue. An ANYDATA
queue's payload is of the SYS.ANYDATA
datatype. A TYPED
queue has a specific datatype (such as Varchar2, CLOB, BLOB, Number). To determine the payload type of a queue, query the OBJECT_TYPE
column of the DBA_QUEUE_TABLES
view.
select owner, queue_table, object_type from dba_queue_tables;
The Oracle memory segment used by buffered queues is part of the STREAMS_POOL
in the SGA
. The type of queue used by Streams depends on the type of LCR that is being stored. Captured and buffered LCRs are stored in buffered queues. Persistent LCRs are stored in persistent queues.
For more information on Streams Queues, review the Introduction to Message Staging and Propagation section of the Oracle Streams Concepts and Administration user's manual.
It is always helpful to understand the whole picture and the pieces that make up the picture. As such, we start with the image as follows:
We use the image above as a reference in this chapter to explain the following processes:
So, let us start covering each of the main processes and components and it's role in the Streams environment.