Thread: Streams on RAC

This question is answered. Helpful answers available: 5. Correct answers available: 1.


Permlink Replies: 2 - Pages: 1 - Last Post: Apr 27, 2009 7:14 AM Last Post By: Ramineni
GrumpyDBA

Posts: 103
Registered: 10/08/98
Streams on RAC
Posted: Apr 23, 2009 10:42 AM
 
Click to report abuse...   Click to reply to this thread Reply
Does anyone out there know of links or documents on implementing Oracle Streams on RAC? Oracle's best practice page leaves about a page to RAC:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14228/best_gen.htm

And isn't really much help. I am looking for RAC to RAC bidirectional streams information.

Thanks,

Jay
damorgan

Posts: 9,443
Registered: 10/20/03
Re: Streams on RAC
Posted: Apr 23, 2009 12:42 PM   in response to: GrumpyDBA in response to: GrumpyDBA
 
Click to report abuse...   Click to reply to this thread Reply
I taught an AQ and Streams on RAC class a year or so ago for Dell.

The single most important thing to understand is "node affinity."

It is highly recommended that nodes share nothing.

With Data Guard, really just a form of Streams, you run replication from a single node. I would recommend that here too if at all possible.
Ramineni

Posts: 15
Registered: 07/29/05
Re: Streams on RAC
Posted: Apr 27, 2009 7:14 AM   in response to: GrumpyDBA in response to: GrumpyDBA
 
Click to report abuse...   Click to reply to this thread Reply
I am implementing streams over RAC databases.

I agree, oracle does not have enough documentation on implementing streams over RAC.

1. Use a service name that has failover capability between nodes and use this service name while creating the db links.

2. Identify which instance is going to serve replication and assign it to the queue. ( This instance manages all the log mining, capture and propagate and apply). The secondary instance would be used only when the primary one is not available.

begin
DBMS_STREAMS_ADM.SET_UP_QUEUE(
Queue_Table => 'capture_queue_table',
Queue_name => 'capture_queue');
DBMS_STREAMS_ADM.SET_UP_QUEUE(
Queue_Table => 'apply_queue_table',
Queue_name => 'apply_queue');

-- Assign Primary / Secondary Instance IDs
dbms_aqadm.alter_queue_table('capture_queue_table',
primary_instance => 1,
secondary_instance => 2);

dbms_aqadm.alter_queue_table('apply_queue',
primary_instance => 1,
secondary_instance => 2);

end;

3. Make sure that the propagation is between the queues.

dbms_streams_adm.add_table_propagation_rules(
table_name => 'scott.EMP',
STREAMS_NAME => 'propagate_process',
SOURCE_QUEUE_NAME => 'capture_queue',
destination_QUEUE_NAME => 'Apply_queue@<remote_db>',
include_dml => true,
include_ddl => false,
include_tagged_lcr => true,
source_database => '<Local Database name>', -- Use the database name not individual instances
queue_to_queue => true,
inclusion_rule => true);

Edited by: Ramineni on Apr 27, 2009 10:14 AM

Legend
Guru Guru : 2500 - 1000000 pts
Expert Expert : 1000 - 2499 pts
Pro Pro : 500 - 999 pts
Journeyman Journeyman : 200 - 499 pts
Newbie Newbie : 0 - 199 pts
Oracle ACE Director
Oracle ACE Member
Oracle Employee ACE
Helpful Answer (5 pts)
Correct Answer (10 pts)

Point your RSS reader here for a feed of the latest messages in all forums