You are on page 1of 12

How To Setup One-Way SCHEMA Level Streams Replication (Doc ID 301431.

1)

Master Note for Streams Recommended Configuration (Doc ID 418755.1)

https://gssdba.wordpress.com/2011/04/20/steps-to-implement-schema-level-oracle-streams/

STEPS TO IMPLEMENT SCHEMA LEVEL


ORACLE STREAMS

STEPS TO IMPLEMENT SCHEMA LEVEL ORACLE STREAMS

SOURCE DATABASE: SOURCE

TARGET DATABASE: TARGET

SOURCE SCHEMA NAME: SANKARG

TARGET SCHEMA NAME: SANKARG

Follow the steps in the same sequence.

STEP 0: Check streams unsupported objects present with the schema

Query DBA_STREAMS_UNSUPPORTED to get the list of Tables and the reason why streams won’t support

those tables in replication.

SQL > SELECT TABLE_NAME,REASON FROM DBA_STREAMS_UNSUPPORTED WHERE OWNER='SANKARG';

STEP 1: ADD SUPPLEMENT LOGIN TO ALL THE TABLES WHICH ARE PART OF STREAMS REPLICATION

Add the supplement login for all the tables present in SANKARG schema at the source side

CONN SYS@SOURCE AS SYSDBA

show user
alter database force logging;

alter database add supplemental log data;

alter table SANKARG.BOX ADD SUPPLEMENTAL LOG DATA (ALL,PRIMARY KEY,UNIQUE,FOREIGN KEY)

columns;

STEP 2: SETTING THE ENV VARIABLES AT SOURCE – SOURCE

— The database must run in archive log mode

CONN SYS@SOURCE AS SYSDBA

SHOW USER

select * from global_name;

alter system set global_names=true scope=both;

– Restart DB

STEP 3: SETTING THE ENV VARIABLES AT TARGET – TARGET

— the database must run in archive log mode

CONN SYS@TARGET AS SYSDBA

SHOW USER

select * from global_name;

alter system set global_names=false scope=both;

– Restart DB

STEP 4: CREATING STREAMS ADMINISTRATOR USER AT SOURCE – SOURCE

—at the SOURCE:

create tablespace strepadm datafile '/u01/app/oracle/oradata/SOURCE/strepadm01.dbf' size 1000m;

CONN SYS@DBSOURCE AS SYSDBA


SHOW USER

create user STRMADMIN identified by STRMADMIN default tablespace strepadm temporary tablespace temp;

GRANT CONNECT, RESOURCE, AQ_ADMINISTRATOR_ROLE,DBA,SYSDBA to STRMADMIN;

execute DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STRMADMIN');

STEP 5: CREATING DB LINK AT THE SOURCE -SOURCE

- Connect as the Streams Administrator, create the streams queue and the database link that will be used

for propagation at SOURCE

- Add the target TNS ENTRY details in the tnsnames.ora file (add source entry in target also)

CONN STRMADMIN@SOURCE AS SYSDBA

show user

create database link TARGET connect to STRMADMIN identified by STRMADMIN using 'TARGET';

STEP 6: CREATING STREAMS ADMINISTRATOR USER AT TARGET – TARGET

—at the TARGET:

SQL> create tablespace strepadm datafile '/u01/app/oracle/oradata/TARGET/strepadm01.dbf' size 1000m;

CONN SYS@TARGET AS SYSDBA

show user

PROMPT CREATING USERS

create user STRMADMIN identified by STRMADMIN default tablespace strepadm temporary tablespace temp;

GRANT CONNECT, RESOURCE, AQ_ADMINISTRATOR_ROLE,DBA,SYSDBA to STRMADMIN;

execute DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STRMADMIN');
– IF SANKARG schema is not present in the target please create the same.

STEP 7: CREATE QUEUE AND QUEUE TABLE AT THE SOURCE – SOURCE

Connect as the Streams Administrator, create the streams queue.

connect STRMADMIN@SOURCE

show user

BEGIN

DBMS_STREAMS_ADM.SET_UP_QUEUE(

queue_table => ‘STREAMS_QUEUE_TABLE’,

queue_name => ‘STREAMS_QUEUE_Q’,

queue_user => ‘STRMADMIN’);

END;

STEP 8: CREATE QUEUE AND QUEUE TABLE AT THE TARGET – TARGET

Connect as the Streams Administrator, create the streams queue.

conn STRMADMIN@TARGET

show user

BEGIN

DBMS_STREAMS_ADM.SET_UP_QUEUE (

queue_table => ‘STREAMS_QUEUE_TABLE’,

queue_name => ‘STREAMS_QUEUE_Q’,

queue_user => ‘STRMADMIN’);

END;

STEP 9: CREATE PROPAGATION PROCESS AT SOURCE – SOURCE

conn strmadmin@SOURCE
SHOW USER

BEGIN

DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(

schema_name => ‘SANKARG’,

streams_name => ‘STREAM_PROPAGATE_P1’,

source_queue_name => ‘STRMADMIN.STREAMS_QUEUE_Q’,

destination_queue_name => ‘STRMADMIN.STREAMS_QUEUE_Q@TARGET’,

include_dml => true,

include_ddl => true,

source_database => ‘SOURCE’);

END;

STEP 10 : CREATE CAPTURE PROCESS AT SOURCE – SOURCE

CONN strmadmin@SOURCE

show user

BEGIN

DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(

schema_name => ‘SANKARG,

streams_type => ‘CAPTURE’,

streams_name => ‘STREAM_CAPTURE_C1’,

queue_name => ‘STRMADMIN.STREAMS_QUEUE_Q’,


include_dml => true,

include_ddl => true,

source_database => ‘SOURCE’);

END;

STEP 11 : CREATE APPLY PROCESS AT TARGET – TARGET

CONN STRMADMIN/STRMADMIN@TARGET

show user

BEGIN

DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(

schema_name => ‘SANKARG’,

streams_type => ‘APPLY ‘,

streams_name => ‘STREAM_APPLY_A1’,

queue_name => ‘STRMADMIN.STREAMS_QUEUE_Q’,

include_dml => true,

include_ddl => true,

source_database => ‘SOURCE’);

END;

STEP 12: CREATE NEGATIVE RULE AT SOURCE FOR UNSUPPORTED TABLES – SOURCE
Set negative rule for all the tables which are unsupported by streams (List you got from querying

DBA_STREAMS_UNSUPPORTED)

conn strmadmin@SOURCE

show user

BEGIN

DBMS_STREAMS_ADM.ADD_TABLE_RULES(

table_name => ‘SANKARG.<UNSUPPORTED TABLE NAME>’,

streams_type => ‘capture’,

streams_name => ‘STREAM_CAPTURE_C1’,

queue_name => ‘strmadmin.STREAMS_QUEUE_Q’,

include_dml => true,

include_ddl => true,

inclusion_rule => false);

END;

STEP 13: STREAMS OBJECT INSTANTATION

SOURCE:

$exp USERNAME/PASSWORD parfile=exp_streams.par

vi exp_streams.par

file=exp_streams.dmp

log=exp_streams.log

object_consistent=y
OWNER=SANKARG

STATISTICS=NONE

SCP the .dmp file to target and import it:

TARGET:

imp FROMUSER=SANKARG TOUSER=SANKARG

FILE=exp_streams.dmp log=exp_streams.log STREAMS_INSTANTIATION=Y IGNORE=Y COMMIT=Y

STEP 14: START THE APPLY PROCESS AT TARGET – TARGET

connect STRMADMIN@TARGET

show user

BEGIN

DBMS_APPLY_ADM.START_APPLY(

apply_name => ‘STREAM_APPLY_A1′);

END;

—- Set stop_on_error to false so apply does not abort for every error; then, start the Apply process on the

destination

BEGIN

DBMS_APPLY_ADM.SET_PARAMETER(

apply_name => ‘STREAM_APPLY_A1’,

parameter => ‘disable_on_error’,

value => ‘n’);

END;

— Start Apply

BEGIN
DBMS_APPLY_ADM.START_APPLY(

apply_name => ‘STREAM_APPLY_A1’);

END;

STEP 15 : START THE CAPTURE PROCESS AT SOURCE – SOURCE

connect STRMADMIN@TARGET

show user

BEGIN

DBMS_CAPTURE_ADM.START_CAPTURE(

capture_name => ‘STREAM_CAPTURE_C1′);

END;

Notes:

======

SELECT CAPTURE_NAME,STATUS,ERROR_MESSAGE FROM DBA_CAPTURE;

SELECT PROPAGATION_NAME,STATUS,ERROR_MESSAGE FROM DBA_PROPAGATION;

SELECT APPLY_NAME,STATUS,ERROR_MESSAGE FROM DBA_APPLY;

STEPS TO STOP STREAMS:

======================

APPLY_NAME = STREAM_APPLY_A1

CAPTURE_NAME = STREAM_CAPTURE_C1

PROPAGATION_NAME = STREAM_PROPAGATION_P1
Execute the below steps with streams administrator user only:

=============================================================

STEP 1. STOP THE APPLY PROCESS:

BEGIN
DBMS_APPLY_ADM.STOP_APPLY(
apply_name => 'STREAM_APPLY_A1');
END;
/

STEP 2. STOP THE PROPAGATION PROCESS:

BEGIN
DBMS_PROPAGATION_ADM.STOP_PROPAGATION(
propagation_name => 'STREAM_PROPAGATION_P1');
END;
/

STEP 3. STOP THE CAPTURE PROCESS

BEGIN
DBMS_CAPTURE_ADM.STOP_CAPTURE(
capture_name => 'STREAM_CAPTURE_C1');
END;
/

STEPS TO START STREAMS: Fallow the steps in same order


======================================================
APPLY_NAME = STREAM_APPLY_A1

CAPTURE_NAME = STREAM_CAPTURE_C1

PROPAGATION_NAME = STREAM_PROPAGATION_P1

Execute the below steps with streams administrator user only:


=============================================================

STEP 1. START THE APPLY PROCESS:

BEGIN

DBMS_APPLY_ADM.START_APPLY(

apply_name => 'STREAM_APPLY_A1');

END;

STEP 2. START THE PROPAGATION PROCESS:

BEGIN

DBMS_PROPAGATION_ADM.START_PROPAGATION(

propagation_name => 'STREAM_PROPAGATION_P1');

END;
/

STEP 3. START THE CAPTURE PROCESS

BEGIN

DBMS_CAPTURE_ADM.START_CAPTURE(

capture_name => 'STREAM_CAPTURE_C1');

END;

You might also like