<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2654730833842815256</id><updated>2011-11-27T15:18:31.318-08:00</updated><category term='Advanced Replication'/><category term='Oracle'/><category term='Streams'/><title type='text'>Oracle Database</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-5552753758777225913</id><published>2009-10-23T16:22:00.000-07:00</published><updated>2009-10-23T16:32:36.981-07:00</updated><title type='text'>Oracle Streams -11g features</title><content type='html'>Database 11g Contains numerous Streams Performance improvements, such as,&lt;br /&gt;&lt;br /&gt;1.The reader process in the capture component mines from the in-memory redo log buffer whenever possible to minimize disk I/O and reduce latency of capture.&lt;br /&gt;&lt;br /&gt;2.The capture process directly communicate with the apply component to improve LCR transaction throughput and reduce end-to-end replication latency. This optimization, know as Combined Capture and Apply, is automatically enabled for single capture/single apply configuration.&lt;br /&gt;&lt;br /&gt;3.The applier process employs an internal mechanism to execute change records and thus reduces CPU consumption. In addition, extensive caching minimized latch contention adn other wait events.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-5552753758777225913?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/5552753758777225913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2009/10/oracle-streams-11g-features.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/5552753758777225913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/5552753758777225913'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2009/10/oracle-streams-11g-features.html' title='Oracle Streams -11g features'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-6584597617784785338</id><published>2009-09-20T19:24:00.000-07:00</published><updated>2009-09-24T19:54:08.493-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Advanced Replication'/><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>Adding Partition Table to Streams</title><content type='html'>Steps for adding a Partition table to an existing single source Streams replication environment.&lt;br /&gt;&lt;br /&gt;Source database (S): ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;Target database (T): MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;Source &amp; Target Schema: SCOTT&lt;br /&gt;Table: SALES_PART&lt;br /&gt;&lt;br /&gt;Note: Ensure that you have setup the streams for replication for the first time and created a streams administrator before executing following steps.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps for adding a Partitioned table:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Stop the capture process(S)&lt;br /&gt;2. Setup logging &amp; supplemental logging for the table (S)&lt;br /&gt;3. Add capture rules on the table (S)&lt;br /&gt;4. Add propagation rules on the table(S)&lt;br /&gt;5. Set Instantiation of table from Source(S)&lt;br /&gt;6. Export, Import of table(Data) from Source(S) to Target (T) &lt;br /&gt;7. Add apply rules to the table(T) &lt;br /&gt;8. Start the capture process(S)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1 Stop the capture process(S)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmORCL@ORCL&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;  DBMS_CAPTURE_ADM.STOP_CAPTURE(&lt;br /&gt;        capture_name  =&gt;  'STREAMS_CAPTURE');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;strong&gt;2 Configure logging &amp; supp. logging for the table (S)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmORCL@ORCL&lt;br /&gt;&lt;br /&gt;--Create Partition table if does not exist on the source database.&lt;br /&gt;&lt;br /&gt;SQL&gt; create table SCOTT.SALES_PART&lt;br /&gt;                        (INVOICE_NO NUMBER,&lt;br /&gt;                        SALE_YEAR INT NOT NULL,&lt;br /&gt;                        SALE_MONTH INT NOT NULL,&lt;br /&gt;                        SALE_DAY INT NOT NULL)&lt;br /&gt;partition by range (SALE_YEAR,SALE_MONTH,SALE_DAY)&lt;br /&gt;(PARTITION SALES_Q1 VALUES LESS THAN (1994, 04, 01) TABLESPACE TBS_USERDATA,&lt;br /&gt;PARTITION SALES_Q2 VALUES LESS THAN (1994,07,01) TABLESPACE TBS_USERDATA)&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;alter table SCOTT.SALES_PART logging;&lt;br /&gt;alter table SCOTT.SALES_PART add supplemental log data (primary key,unique,foreign key,all) columns;&lt;br /&gt;&lt;br /&gt;select partition_name, logging from dba_tab_partitions where table_name='SALES_PART' and TABLE_OWNER='SCOTT';&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3 Add capture rules on the table (S)&lt;/strong&gt;&lt;br /&gt;Source(ORCL):&lt;br /&gt;&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmORCL@ORCL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;  DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;    table_name     =&gt; 'SCOTT.SALES_PART',   &lt;br /&gt;    streams_type   =&gt; 'capture',&lt;br /&gt;    streams_name   =&gt; 'STREAMS_CAPTURE',&lt;br /&gt;    queue_name     =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;    include_dml    =&gt; true,&lt;br /&gt;    include_ddl    =&gt; true,&lt;br /&gt;    inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4 Add propagation rules on the table(S)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Source(ORCL):&lt;br /&gt;&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmORCL@ORCL&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;  DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(&lt;br /&gt;    table_name               =&gt; 'SCOTT.SALES_PART', &lt;br /&gt;    streams_name             =&gt; 'STREAMS_PROPAGATE', &lt;br /&gt;    source_queue_name        =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;    destination_queue_name   =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV@MYDEV',&lt;br /&gt;    include_dml              =&gt; true,&lt;br /&gt;    include_ddl              =&gt; true,&lt;br /&gt;    source_database          =&gt; 'ORCL',&lt;br /&gt;    inclusion_rule           =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5 Set Instantiation of table from Source (S) &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;--This script needs to be run as "strmadmin".&lt;br /&gt;&lt;br /&gt;Source(ORCL):&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmORCL@ORCL&lt;br /&gt;&lt;br /&gt;BEGIN &lt;br /&gt;    DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION('SCOTT.SALES_PART'); &lt;br /&gt;END; &lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6 Export, import of table (Data) from Source(S) to Target (T)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Source(ORCL):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$exp parfile=exp_sales_part.par&lt;br /&gt;&lt;br /&gt;#exp_sales_part.par&lt;br /&gt;USERID=system@ORCL&lt;br /&gt;FILE=exp_SALES_PART.dmp&lt;br /&gt;LOG=exp_SALES_PART.log&lt;br /&gt;ROWS=Y&lt;br /&gt;GRANTS=Y&lt;br /&gt;INDEXES=Y&lt;br /&gt;TRIGGERS=N&lt;br /&gt;CONSTRAINTS=Y&lt;br /&gt;CONSISTENT=Y&lt;br /&gt;STATISTICS=NONE&lt;br /&gt;TABLES= SCOTT.SALES_PART&lt;br /&gt;&lt;br /&gt;ftp the exp_SALES_PART.dmp file to target site &lt;br /&gt;&lt;br /&gt;Target(MYDEV):&lt;br /&gt;&lt;br /&gt;$imp parfile=imp_MYDEV_sales_part.par&lt;br /&gt;&lt;br /&gt;#imp_MYDEV_ sales_part.par &lt;br /&gt;USERID=system@MYDEV&lt;br /&gt;FILE=exp_SALES_PART.dmp&lt;br /&gt;LOG=imp_SALES_PART.log &lt;br /&gt;ROWS=Y&lt;br /&gt;IGNORE=Y&lt;br /&gt;resumable=y&lt;br /&gt;resumable_timeout=43200&lt;br /&gt;commit=y&lt;br /&gt;statistics=NONE&lt;br /&gt;buffer=50000000&lt;br /&gt;RECORDLENGTH=65535&lt;br /&gt;STREAMS_INSTANTIATION=Y&lt;br /&gt;FULL=Y&lt;br /&gt;&lt;br /&gt;make sure that target table instantiated&lt;br /&gt;&lt;br /&gt;select SOURCE_DATABASE,SOURCE_OBJECT_OWNER,SOURCE_OBJECT_NAME,&lt;br /&gt;INSTANTIATION_SCN from dba_apply_instantiated_objects where SOURCE_OBJECT_NAME='SALES_PART';&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7 Add apply rules to the table(T)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Target(MYDEV):&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmMYDEV@MYDEV&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;  DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;    table_name      =&gt; 'SCOTT.SALES_PART', &lt;br /&gt;    streams_type    =&gt; 'apply', &lt;br /&gt;    streams_name    =&gt; 'streams_apply',&lt;br /&gt;    queue_name      =&gt; &lt;br /&gt;            'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;    include_dml     =&gt; true,&lt;br /&gt;    include_ddl     =&gt; true,&lt;br /&gt;    source_database =&gt; 'ORCL',&lt;br /&gt;    inclusion_rule  =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;-- grant all permissions on SALES_PART to streams administrator&lt;br /&gt;conn / as sysdba&lt;br /&gt;&lt;br /&gt;GRANT ALL ON SCOTT.SALES_PART to strmadmin;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8 Start the capture process(S) &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmORCL@ORCL&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;  DBMS_CAPTURE_ADM.START_CAPTURE(&lt;br /&gt;        capture_name  =&gt;  'STREAMS_CAPTURE');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Verification:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Add a partition &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table SCOTT.SALES_PART add partition SALES_Q3&lt;br /&gt; VALUES LESS THAN(1994,10,01) TABLESPACE TBS_USERDATA;&lt;br /&gt;&lt;br /&gt;Check on the source and target databases.&lt;br /&gt;-----------------------------------------&lt;br /&gt;select TABLE_NAME,partition_name from dba_tab_partitions where table_name='SALES_PART' and TABLE_OWNER='SCOTT';&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Drop partition &lt;/strong&gt;&lt;br /&gt;Alter table SCOTT.SALES_PART drop partition SALES_Q3;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Move partition to different tablespace&lt;/strong&gt;&lt;br /&gt;Alter table SCOTT.SALES_PART MOVE PARTITION SALES_Q2 TABLESPACE STREAMS01;&lt;br /&gt;&lt;br /&gt;select TABLE_NAME,partition_name,tablespace_name from dba_tab_partitions where table_name='SALES_PART' and TABLE_OWNER='SCOTT';&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4.Perform DML:&lt;/strong&gt;&lt;br /&gt;Insert into SCOTT.SALES_PART values (1,1994,02,05);&lt;br /&gt;Insert into SCOTT.SALES_PART values (2,1994,05,10);&lt;br /&gt;Commit;&lt;br /&gt;&lt;br /&gt;DELETE FROM SCOTT.SALES_PART;&lt;br /&gt;COMMIT;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5.Truncate Partition table:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Alter table SCOTT.SALES_PART TRUNCATE PARTITION SALES_Q1;&lt;br /&gt;Alter table SCOTT.SALES_PART TRUNCATE PARTITION SALES_Q2;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. SPLIT Table Partitions&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Alter table SCOTT.SALES_PART SPLIT PARTITION SALES_Q2 AT(1994,06,01)&lt;br /&gt;INTO (PARTITION SALES_Q2, PARTITION SALES_Q3);&lt;br /&gt;&lt;br /&gt;select TABLE_NAME,partition_name,tablespace_name from dba_tab_partitions where table_name='SALES_PART' and TABLE_OWNER='SCOTT';&lt;br /&gt;&lt;br /&gt;TABLE_NAME                     PARTITION_NAME                 TABLESPACE_NAME&lt;br /&gt;------------------------------ ------------------------------ --------------------&lt;br /&gt;SALES_PART                     SALES_Q1                       TBS_USERDATA&lt;br /&gt;SALES_PART                     SALES_Q2                       STREAMS01&lt;br /&gt;SALES_PART                     SALES_Q3                       STREAMS01&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. Merge partition &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Alter table SCOTT.SALES_PART MERGE PARTITIONS SALES_Q2, SALES_Q3 INTO PARTITION SALES_Q23;&lt;br /&gt;&lt;br /&gt;TABLE_NAME                     PARTITION_NAME                 TABLESPACE_NAME&lt;br /&gt;------------------------------ ------------------------------ -------------------&lt;br /&gt;SALES_PART                     SALES_Q1                       TBS_USERDATA&lt;br /&gt;SALES_PART                     SALES_Q23                      TBS_USERDATA&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8. Rename Partition&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Alter table SCOTT.SALES_PART RENAME PARTITION SALES_Q23 TO SALES_Q2;&lt;br /&gt;&lt;br /&gt;TABLE_NAME                     PARTITION_NAME                 TABLESPACE_NAME&lt;br /&gt;------------------------------ ------------------------------ --------------------&lt;br /&gt;SALES_PART                     SALES_Q1                       TBS_USERDATA&lt;br /&gt;SALES_PART                     SALES_Q2                       TBS_USERDATA&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9. Create LOCAL index on SALES_PART&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;CREATE INDEX SCOTT.SALES_PART_IDX ON SCOTT.SALES_PART(INVOICE_NO,SALE_MONTH)&lt;br /&gt;LOCAL&lt;br /&gt;(PARTITION SALES_Q1 TABLESPACE TBS_USERIDX,&lt;br /&gt;PARTITION SALES_Q2 TABLESPACE TBS_USERIDX);&lt;br /&gt;select TABLE_NAME,INDEX_NAME,PARTITIONING_TYPE,LOCALITY,ALIGNMENT from dba_part_indexes where TABLE_NAME like 'SALES_PART';&lt;br /&gt;&lt;br /&gt;TABLE_NAME INDEX_NAME                     PARTITI LOCALI ALIGNMENT&lt;br /&gt;---------- ------------------------------ ------- ------ ------------&lt;br /&gt;SALES_PART SALES_PART_IDX                 RANGE   LOCAL  NON_PREFIXED&lt;br /&gt;&lt;br /&gt;select INDEX_NAME,COMPOSITE,PARTITION_NAME,HIGH_VALUE,PARTITION_POSITION,STATUS,USER_STATS FROM DBA_IND_PARTITIONS WHERE INDEX_NAME LIKE 'SALES_PART_IDX';&lt;br /&gt;&lt;br /&gt;INDEX_NAME                     COM PARTITION_NAME                 HIGH_VALUE      PARTITION_POSITION STATUS   USE&lt;br /&gt;------------------------------ --- ------------------------------ --------------- ------------------ -------- ---&lt;br /&gt;SALES_PART_IDX                 NO  SALES_Q1                       1994, 04, 01                     1 USABLE   NO&lt;br /&gt;SALES_PART_IDX                 NO  SALES_Q2                       1994, 07, 01                     2 USABLE   NO&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-6584597617784785338?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/6584597617784785338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2009/09/streans-adding-pt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/6584597617784785338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/6584597617784785338'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2009/09/streans-adding-pt.html' title='Adding Partition Table to Streams'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-7064277006332834989</id><published>2009-09-02T07:52:00.000-07:00</published><updated>2009-09-17T20:14:48.737-07:00</updated><title type='text'>Bi directional Streams setup</title><content type='html'>Bi-directional streams&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-7064277006332834989?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/7064277006332834989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2009/09/streams-database-migration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/7064277006332834989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/7064277006332834989'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2009/09/streams-database-migration.html' title='Bi directional Streams setup'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-2771940728280865726</id><published>2009-08-07T16:40:00.000-07:00</published><updated>2009-09-17T20:16:29.948-07:00</updated><title type='text'>Streams Database Move</title><content type='html'>Streams source database Migration:&lt;br /&gt;Below steps I followed to migrate streams source database. Streams configured at table level using local capture.&lt;br /&gt;1. Stopped streams capture &amp;amp; propagation process prior to export on source db.&lt;br /&gt;2. Checked for any errors on the streams target database in dba_apply_error. &lt;br /&gt;3. Exported Full database using Datapump (set parameter Flashback_time or flashback_scn).&lt;br /&gt;4. Created new source database at new destination &amp;amp; enabled Archived Log mode.&lt;br /&gt;5. Imported full database.&lt;br /&gt;6. Ran utlrp.sql.&lt;br /&gt;7. Disabled the propagation process.&lt;br /&gt;8. Configured listener and tnsnames for new source db. &lt;br /&gt;9. Ran Instantiation for the replication objects.&lt;br /&gt;10. Started propagation process then capture process on the new source db.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-2771940728280865726?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/2771940728280865726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2009/08/bi-directional-streams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/2771940728280865726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/2771940728280865726'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2009/08/bi-directional-streams.html' title='Streams Database Move'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-723342760784117964</id><published>2009-03-18T19:26:00.000-07:00</published><updated>2009-03-18T20:40:40.671-07:00</updated><title type='text'>Adding a table to a single source Streams environment</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;Adding a table to an existing single source Streams replication environment while the table is active.&lt;br /&gt;&lt;br /&gt;Source database (S): ORCL.ORACLEDB1.KRISH.COM &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;Target database (T): MYDEV.ORACLEDB2.KRISH.COM &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;Source &amp;amp; Target Schema: SCOTT&lt;br /&gt;Adding Table: DEPT&lt;br /&gt;&lt;br /&gt;Steps to add table “DEPT” which exists at ORCL.ORACLEDB1.KRISH.COM to the Streams environment without stopping the existing apply/propagation/capture:&lt;br /&gt;&lt;br /&gt;Note: Ensure that you have setup the streams for replication for the first time and created a streams administrator before executing following scripts.&lt;br /&gt;&lt;br /&gt;1. Add apply rules on the table(T)&lt;br /&gt;2. Add propagation rules on the table(S)&lt;br /&gt;3. Configure supplemental logging for the table (S)&lt;br /&gt;4. Add capture rules on the table (S)&lt;br /&gt;5. Set Instantiation of table from Source(S)&lt;br /&gt;6. Export, Import of table(Data) from Source(S) to Target (T)&lt;br /&gt;7. Grant privileges to strmadmin user(T) &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt; &lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;1 Add apply rules on the table(T) &lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmpwd@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.DEPT',&lt;br /&gt;streams_type =&gt; 'apply',&lt;br /&gt;streams_name =&gt; 'streams_apply',&lt;br /&gt;queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV,&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;2 Add propagation rules on the table(S)&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmpwd@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.DEPT',&lt;br /&gt;streams_name =&gt; 'STREAMS_PROPAGATE',&lt;br /&gt;source_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;destination_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV@MYDEV.ORACLEDB2.KRISH.COM',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;3 Configure supplemental logging for the table (S)&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmpwd@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;alter table SCOTT.DEPT add supplemental log data (primary key, unique, foreign key, all) columns;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;4 Add capture rules on the table (S)&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmpwd@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.DEPT',&lt;br /&gt;streams_type =&gt; 'capture',&lt;br /&gt;streams_name =&gt; 'STREAMS_CAPTURE',&lt;br /&gt;queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;5 Set Instantiation of the table from Source (S)&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;--This script needs to be run as "strmadmin".&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmpwd@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION('SCOTT.DEPT');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;6 Export, import of table (Data) from Source(S) to Target (T)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;$exp parfile=DEPT.par&lt;br /&gt;&lt;br /&gt;DEPT.par&lt;br /&gt;USERID=system/pwd@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;FILE=DEPT.dmp&lt;br /&gt;LOG= DEPT.log&lt;br /&gt;ROWS=Y&lt;br /&gt;GRANTS=Y&lt;br /&gt;INDEXES=Y&lt;br /&gt;TRIGGERS=N&lt;br /&gt;CONSTRAINTS=Y&lt;br /&gt;CONSISTENT=Y&lt;br /&gt;STATISTICS=NONE&lt;br /&gt;TABLES= SCOTT.DEPT&lt;br /&gt;&lt;br /&gt;ftp the DEPT.dmp file to target site&lt;br /&gt;&lt;br /&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;$imp parfile=imp_DEPT.par&lt;br /&gt;&lt;br /&gt;imp_DEPT.par&lt;br /&gt;USERID=system/pwd@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;FILE=DEPT.dmp&lt;br /&gt;LOG= DEPT.log&lt;br /&gt;ROWS=Y&lt;br /&gt;IGNORE=Y&lt;br /&gt;STREAMS_INSTANTIATION=Y&lt;br /&gt;FULL=Y&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;7 Grant privileges to strmadmin user(T)&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;-- grant all permissions on DEPT to streams administrator&lt;br /&gt;conn SCOTT/tiger@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;GRANT ALL ON SCOTT.DEPT to strmadmin;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-723342760784117964?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/723342760784117964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2009/03/adding-table-to-single-source-streams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/723342760784117964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/723342760784117964'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2009/03/adding-table-to-single-source-streams.html' title='Adding a table to a single source Streams environment'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-3825799131029281909</id><published>2009-03-16T21:07:00.000-07:00</published><updated>2009-03-16T21:11:56.355-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>Hub and Spoke Streams Replication Setup between 3 Databases</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;Hub-n-Spoke replication has typically a single Hub database to which all the other Spoke databases will be replicating. The changes (DML &amp;amp; DDL) originated on the Hub will be replicated to all the Spoke databases. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;Publishing the document with example soon. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-3825799131029281909?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/3825799131029281909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2009/03/hub-and-spoke-streams-replication-setup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/3825799131029281909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/3825799131029281909'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2009/03/hub-and-spoke-streams-replication-setup.html' title='Hub and Spoke Streams Replication Setup between 3 Databases'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-1049666969924907841</id><published>2009-02-07T16:27:00.000-08:00</published><updated>2009-02-27T17:21:12.051-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>Oracle Streams Overview</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;Oracle Streams enables information sharing. Oracle Streams can share database changes and other information in a stream, which can propagate events within a database or from one database to another. The specified information is routed to specified destinations. The result is a feature that provides greater functionality and flexibility than traditional solutions for capturing and managing information, and sharing the information with other databases and applications.&lt;br /&gt;&lt;br /&gt;- A &lt;strong&gt;capture process&lt;/strong&gt; is an Oracle background process that scans the database redo log to capture DML and DDL changes made to database objects. It formats these changes into events called logical change records (LCRs) and enqueues them into a queue.&lt;br /&gt;&lt;br /&gt;- &lt;strong&gt;Propagation process&lt;/strong&gt; send events from one queue to another, and these queues can be in the same database or in different databases.&lt;br /&gt;&lt;br /&gt;- An &lt;strong&gt;apply process&lt;/strong&gt; is an Oracle background process that dequeues events from a queue and applies each event directly to a database object or sends events to apply handlers for custom processing.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-1049666969924907841?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/1049666969924907841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2009/02/oracle-streams-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/1049666969924907841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/1049666969924907841'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2009/02/oracle-streams-overview.html' title='Oracle Streams Overview'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-5412452952996044608</id><published>2009-01-10T19:10:00.000-08:00</published><updated>2009-02-27T17:20:41.575-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>Re-Synchronize/Refresh a Table in Streams Environment</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Purpose:&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The purpose of this article is to outline the steps for Re-Synchronize/Refresh a single table if it is out of sync with source site in one-way replication between two ORACLE databases in Streams environment.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;Schema:SCOTT&lt;br /&gt;Table:EMP&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Steps for Refreshing a Table&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If one of the tables on the Target site is out of Sync with Source site then follow below steps to re-synchronize both:&lt;br /&gt;&lt;br /&gt;1. Stop Capture Process on Source(S)&lt;br /&gt;2. Stop Propagation Process on Source(S)&lt;br /&gt;3. Stop Apply Process on Target(T)&lt;br /&gt;4. Delete the apply errors on Target(T)&lt;br /&gt;5. Truncate the problem table on Target(T)&lt;br /&gt;6. Re-instantiate the problem table on Source(S)&lt;br /&gt;7. Synchronize the problem table through exp/imp&lt;br /&gt;8. Start the apply Process on Target(T)&lt;br /&gt;9. Start the propagation Process on the Source(S)&lt;br /&gt;10.Start the Capture Process on the Source(S)&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;1. Stop Capture Process on Source(S)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;DBMS_CAPTURE_ADM.STOP_CAPTURE(&lt;br /&gt;capture_name =&gt; 'STREAMS_CAPTURE');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;2. Stop Propagation Process on Source(S)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Make sure all the changes are propagated to the Target site, then stop the propagation process on source using following sql&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;SQL&gt;BEGIN&lt;br /&gt;DBMS_PROPAGATION_ADM.STOP_PROPAGATION(&lt;br /&gt;'STREAMS_PROPAGATE',FORCE=&gt;TRUE);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;3. Stop Apply Process on Target(T)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make sure all changes are applied on the target, then stop apply process on target using following sql&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;DBMS_APPLY_ADM.STOP_APPLY(&lt;br /&gt;apply_name =&gt; 'STREAMS_APPLY');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;4. Delete the apply errors on Target&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As we will re-synchronize, we can delete the errors that are in the error_queue of the apply process. To do so, we can execute either DBMS_APPLY_ADM.DELETE_ERROR or DBMS_APPLY_ADM.DELETE_ALL_ERRORS at the apply site.&lt;br /&gt;&lt;br /&gt;You need to make sure that you are not deleting any needed transaction, specially if you are not synchronizing all the replicated for that apply process.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Check the errors in the error queue:&lt;br /&gt;&lt;br /&gt;SQL&gt; select apply_name, LOCAL_TRANSACTION_ID, ERROR_MESSAGE from dba_apply_error;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;To delete specific transaction:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; exec DBMS_APPLY_ADM.DELETE_ERROR('transaction_id');&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;To delete all errors: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; exec DBMS_APPLY_ADM.DELETE_ALL_ERRORS('apply_name');&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;5. Truncate the problem table on Target&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Truncate the problem table if you are using traditional export/import for copying the data.&lt;br /&gt;&lt;br /&gt;If you are using datapump exp/imp then ignore step 5 and go to step 7(use parameter TABLE_EXISTS_ACTION=truncate)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Connect strmadmin/strmadmin@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;SQL&gt; Truncate table SCOTT.EMP;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;font-size:130%;"&gt;&lt;strong&gt;6. Re-instantiate the problem table on Source(S)&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM &lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;BEGIN &lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION('SCOTT.EMP');&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;END;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;DECLARE iscn NUMBER; BEGIN iscn:=DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@MYDEV.ORACLEDB2.KRISH.COM ( source_object_name =&gt; 'SCOTT.EMP', source_database_name =&gt; 'ORCL.ORACLEDB1.KRISH.COM', instantiation_scn =&gt; iscn); &lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;END; &lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;/ &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:courier new;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;7. Synchronize the problem table through datapump exp/imp&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now synchronize the problem table on source and target so they are identical, Here we are copying the data through DP exp/imp from source to target.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6a) Export the source Table:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For example we are replicating table EMP of SCOTT, so we should do the following:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;expdp parfile=expdp.par&lt;br /&gt;&lt;br /&gt;expdp.par &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;userid=system/pwd@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;tables=SCOTT.EMP&lt;br /&gt;DUMPFILE=dpump:expdpScott.dmp&lt;br /&gt;LOGFILE= dpump:expdpScott.log&lt;br /&gt;JOB_NAME=exp_job&lt;br /&gt;CONTENT=DATA_ONLY&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6b) Import the source table to target:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;impdp parfile=impdp.par&lt;br /&gt;&lt;br /&gt;impdp.par &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;userid=system/pwd@MYDEV.ORACLEDB2.KISH.COM&lt;br /&gt;tables=SCOTT.EMP&lt;br /&gt;DUMPFILE=dpump:expdpScott.dmp&lt;br /&gt;LOGFILE= dpump:impdpScott.log&lt;br /&gt;JOB_NAME=imp_job&lt;br /&gt;TABLE_EXISTS_ACTION=truncate&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;8. Start the Apply Process on Target(T)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;DBMS_APPLY_ADM.START_APPLY(&lt;br /&gt;apply_name =&gt; 'STREAMS_APPLY');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;Make sure apply process is started&lt;br /&gt;&lt;br /&gt;SQL&gt; select apply_name, status from dba_apply;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;9. Start the propagation Process on the Source(S)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;DBMS_PROPAGATION_ADM.START_PROPAGATION('STREAMS_PROPAGATE');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;10. Start the Capture Process on the Source(S)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;DBMS_CAPTURE_ADM.START_CAPTURE(&lt;br /&gt;capture_name =&gt; 'STREAMS_CAPTURE');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;Make sure capture process is started&lt;br /&gt;&lt;br /&gt;SQL&gt; select capture_name, status from dba_capture;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Conclusion:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;The Target database is not up to date till the refresh is completed.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-5412452952996044608?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/5412452952996044608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2009/01/re-synchronizingrefresh-table-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/5412452952996044608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/5412452952996044608'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2009/01/re-synchronizingrefresh-table-in.html' title='Re-Synchronize/Refresh a Table in Streams Environment'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-8027259930010951209</id><published>2008-12-21T18:35:00.000-08:00</published><updated>2009-03-08T18:11:41.343-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Advanced Replication'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>Streams 10gR2 Implementation -Table Level</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Oracle Streams 10gR2 Step by Step&lt;/strong&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:courier new;"&gt;Purpose:&lt;br /&gt;&lt;br /&gt;Oracle Streams enables the sharing of data and events in a data stream, either within a database or from one database to another.&lt;br /&gt;&lt;br /&gt;The purpose of this article is to outline the steps for setting up one-way replication between two ORACLE databases using streams at table level.&lt;br /&gt;&lt;br /&gt;Source database (S): ORCL.ORACLEDB1.KRISH.COM 192.162.2.138&lt;br /&gt;Target database (T): MYDEV.ORACLEDB2.KRISH.COM 192.162.2.139&lt;br /&gt;Source Schema: SCOTT&lt;br /&gt;Target Schema: SCOTT&lt;br /&gt;Replication Tables:&lt;br /&gt;EMP,&lt;br /&gt;DEPT,&lt;br /&gt;SALGRADE,&lt;br /&gt;BONUS&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;Streams Setup Steps:&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Following sequence of steps are required in order to implement streams in online. &lt;br /&gt;&lt;br /&gt;1. Set parameters Relevant to Streams (S &amp;amp; T)&lt;br /&gt;2. Set up ARCHIVELOG mode (S &amp;amp; T)&lt;br /&gt;3. Create separate Tablespace for stream admin user (S &amp;amp; T)&lt;br /&gt;4. Setup streams admin user (S &amp;amp; T)&lt;br /&gt;5. Create a database link on source (S)&lt;br /&gt;6. Setup Streams queues on both Source(S) and Target (T)&lt;br /&gt;7. Setup supplemental logging on Source(S)&lt;br /&gt;8. Configure capture process (S)&lt;br /&gt;9. Configure propagation process (S)&lt;br /&gt;10.Create destination tables (Metadata-only export/import) on Target (T)&lt;br /&gt;11.Set Instantiation of tables from Source(S)&lt;br /&gt;12.Export, Import of tables(Data) from Source(S) to Target (T)&lt;br /&gt;13.Grant object privileges to stream admin user (T)&lt;br /&gt;14.Configure apply process on Target(T)&lt;br /&gt;15.Start the apply process (T) and Capture process(S)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;1 Set parameters Relevant to Streams (S &amp;amp; T) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1a) Initialization parameters&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Set below Init.ora parameters on both Source (S) and Target (T) databases.&lt;br /&gt;&lt;br /&gt;db_name =&lt;name&gt;&lt;br /&gt;db_domain = ORACLEDB1.KRISH.COM&lt;br /&gt;global_names = TRUE&lt;br /&gt;compatible = 10.2.0&lt;br /&gt;job_queue_processes =4&lt;br /&gt;timed_statistics =TRUE&lt;br /&gt;statistics_level =TYPICAL&lt;br /&gt;sga_target=&gt;0 or streams_pool_size &gt;=200m&lt;br /&gt;open_links =4&lt;br /&gt;logmnr_max_persistent_sessions =1(&gt;= no. of capture processes)&lt;br /&gt;parallel_max_servers =2 or more(current value + (3 * capture processes) + (3&lt;br /&gt;* apply processes)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;1b) Streams Process Parameters&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Capture: (DBMS_CAPTURE package)&lt;br /&gt;Set capture parameters on source database&lt;br /&gt;&lt;br /&gt;1. Set retention time for capture checkpoints as needed&lt;br /&gt;Alter_capture(‘captureName’, checkpoint_retention_time=&gt;7)&lt;br /&gt;&lt;br /&gt;2. Reduce the capture checkpoint frequency parameter&lt;br /&gt;Set_parameter(‘captureName’,’_checkpoint_frequency’,’1000’)&lt;br /&gt;Note: Recommended “_checkpoint_frequency=1000” If redo logs are over 300Mb in size.&lt;br /&gt;&lt;br /&gt;Apply: (DBMS_APPLY package)&lt;br /&gt;Set Apply parameters on Target database&lt;br /&gt;&lt;br /&gt;1. Set_parameter(‘applyName’,’parallelism’,’4’)&lt;br /&gt;2. Set_parameter(‘applyName’,’disable_on_error’,’N’)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:130%;"&gt;2 Set up ARCHIVELOG mode (S &amp;amp; T)&lt;/span&gt; &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Set below parameters in init&lt;sid&gt;.ora and turn on “ARCHIVELOG” mode&lt;br /&gt;&lt;br /&gt;log_archive_dest=‘/u002/oradata/ORCL/arch’&lt;br /&gt;log_archive_format=‘ARCH%t_%s_%r.LOG’&lt;br /&gt;&lt;br /&gt;Issue below command in mount state&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database archivelog;&lt;br /&gt;SQL&gt; alter database open;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;3 Create separate Tablespace for stream admin user (S &amp;amp; T) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Create default tablespace (streams01) for streams administrator account which stores the queue table. Minimum tablespace size should be 200m.&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect system/&lt;&lt;pwd&gt;&lt;pwd&gt;@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;Create tablespace streams01 datafile ‘/a002/oradata/ORCL/STREAMS0101.dbf’ size 200m autoextend on extent management local uniform size 1m;&lt;br /&gt;&lt;br /&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect &lt;a href="mailto:system/pwd@MYDEV.ORACLEDB2.KRISH.COM"&gt;system/pwd&lt;pwd&gt;&lt;pwd&gt;@MYDEV.ORACLEDB2.KRISH.COM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create tablespace streams01 datafile ‘/a002/oradata/MYDEV/STREAMS0101.dbf’ size 200m autoextend on extent management local uniform size 1m;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;4 Setup streams admin user (S &amp;amp; T) &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;Script creates strmadmin user at source and grants set of privileges.&lt;br /&gt;This script needs to be run as "sys"&lt;br /&gt;&lt;br /&gt;connect /as sysdba&lt;br /&gt;&lt;br /&gt;CREATE USER strmadmin&lt;br /&gt;IDENTIFIED BY strmadmin&lt;br /&gt;DEFAULT TABLESPACE STREAMS01&lt;br /&gt;TEMPORARY TABLESPACE TEMP01&lt;br /&gt;QUOTA UNLIMITED ON STREAMS01;&lt;br /&gt;&lt;br /&gt;--Now grant the CONNECT, RESOURCE, and DBA roles to the Streams administrator:&lt;br /&gt;&lt;br /&gt;GRANT CONNECT, RESOURCE, DBA TO strmadmin;&lt;br /&gt;GRANT SELECT_CATALOG_ROLE TO strmadmin;&lt;br /&gt;GRANT SELECT ANY DICTIONARY TO strmadmin;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(&lt;br /&gt;grantee =&gt; 'strmadmin',&lt;br /&gt;grant_privileges =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;Script creates strmadmin user at Target and grants set of privileges.&lt;br /&gt;This script needs to be run as "sys"&lt;br /&gt;&lt;br /&gt;connect /as sysdba&lt;br /&gt;&lt;br /&gt;CREATE USER strmadmin&lt;br /&gt;IDENTIFIED BY strmadmin&lt;br /&gt;DEFAULT TABLESPACE STREAMS01&lt;br /&gt;TEMPORARY TABLESPACE TEMP01&lt;br /&gt;QUOTA UNLIMITED ON STREAMS01;&lt;br /&gt;&lt;br /&gt;--Now grant the CONNECT, RESOURCE, and DBA roles to the Streams administrator:&lt;br /&gt;&lt;br /&gt;GRANT CONNECT, RESOURCE, DBA TO strmadmin;&lt;br /&gt;GRANT SELECT_CATALOG_ROLE TO strmadmin;&lt;br /&gt;GRANT SELECT ANY DICTIONARY TO strmadmin;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(&lt;br /&gt;grantee =&gt; 'strmadmin',&lt;br /&gt;grant_privileges =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;5 Create a database link on source (S) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Create a private database link on source site. Do not change the password for strmadmin user after creating the database link, if password changed then the propagation process will fail to propagate the changes to the target database.&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect &lt;/span&gt;&lt;a href="mailto:strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM"&gt;&lt;span style="font-family:courier new;"&gt;strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;drop database link MYDEV.ORACLEDB2.KRISH.COM;&lt;br /&gt;&lt;br /&gt;create database link MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;CONNECT TO strmadmin&lt;br /&gt;IDENTIFIED BY strmadmin USING 'MYDEV.ORACLEDB2.KRISH.COM'&lt;br /&gt;/ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;6 Setup Streams queues on both Source(S) and Target(T) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Source and Target queue name similar as STREAMS_QUEUE_&lt;sourcedb&gt;&lt;source_db&gt;_&lt;destdb&gt;&lt;dest_db&gt;&lt;source&gt;&lt;dest&gt;&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;-- Create the source queue&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;dbms_streams_adm.set_up_queue(&lt;br /&gt;queue_name =&gt; 'STREAMS_QUEUE_ORCL_MYDEV');&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;-- Create the destination queue&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;dbms_streams_adm.set_up_queue(&lt;br /&gt;queue_name =&gt; 'STREAMS_QUEUE_ORCL_MYDEV');&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;7 Setup supplemental logging (S) &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The tables which are participating in replication should have primary key exist. If no PK, then unique key columns can be used.&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;alter table SCOTT.EMP add supplemental log data(primary key,unique,foriegn key,all) columns;&lt;br /&gt;alter table SCOTT.DEPT add supplemental log data(primary key,unique,foriegn key,all) columns;&lt;br /&gt;alter table SCOTT.SALGRADE add supplemental log data(primary key,unique,foriegn key,all) columns;&lt;br /&gt;alter table SCOTT.BONUS add supplemental log data(primary key,unique,foriegn key,all) columns;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;8 Configure capture process (S)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.EMP',&lt;br /&gt;streams_type =&gt; 'capture',&lt;br /&gt;streams_name =&gt; 'STREAMS_CAPTURE',&lt;br /&gt;queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.DEPT',&lt;br /&gt;streams_type =&gt; 'capture',&lt;br /&gt;streams_name =&gt; 'STREAMS_CAPTURE',&lt;br /&gt;queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.SALGRADE',&lt;br /&gt;streams_type =&gt; 'capture',&lt;br /&gt;streams_name =&gt; 'STREAMS_CAPTURE',&lt;br /&gt;queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.BONUS',&lt;br /&gt;streams_type =&gt; 'capture',&lt;br /&gt;streams_name =&gt; 'STREAMS_CAPTURE',&lt;br /&gt;queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;--By default streams retention time is 64 days, set this to a realistic value 7 days.&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;dbms_capture_adm.alter_capture(&lt;br /&gt;capture_name =&gt; 'STREAMS_CAPTURE',&lt;br /&gt;checkpoint_retention_time =&gt; 7);&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;--set checkpoint frequency to 1000&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;DBMS_CAPTURE_ADM.SET_PARAMETER&lt;br /&gt;('STREAMS_CAPTURE', '_checkpoint_frequency','1000');&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;9 Configure propagation process (S) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;-- This script needs to be run as "strmadmin"&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.EMP',&lt;br /&gt;streams_name =&gt; 'STREAMS_PROPAGATE',&lt;br /&gt;source_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;destination_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV@MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.DEPT',&lt;br /&gt;streams_name =&gt; 'STREAMS_PROPAGATE',&lt;br /&gt;source_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;destination_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV@MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.SALGRADE',&lt;br /&gt;streams_name =&gt; 'STREAMS_PROPAGATE',&lt;br /&gt;source_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;destination_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV@MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.BONUS',&lt;br /&gt;streams_name =&gt; 'STREAMS_PROPAGATE',&lt;br /&gt;source_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;destination_queue_name =&gt; 'strmadmin.STREAMS_QUEUE_ORCL_MYDEV@MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;10 Create destination tables (Metadata-only exp/imp) on Target (T) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;Export the objects metadata only from source and import on target database.&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;expdp parfile=expdp.par&lt;br /&gt;&lt;br /&gt;expdp.par&lt;br /&gt;userid=system/&lt;pwd&gt;&lt;pwd&gt;@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;tables=SCOTT.EMP,SCOTT.DEPT,SCOTT.SALGRADE,SCOTT.BONUS,&lt;br /&gt;DUMPFILE=dpump:expdpScott.dmp&lt;br /&gt;LOGFILE= dpump:expdpScott.log&lt;br /&gt;JOB_NAME=exp_job&lt;br /&gt;CONTENT=METADATA_ONLY&lt;br /&gt;&lt;br /&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;impdp parfile=impdp.par&lt;br /&gt;&lt;br /&gt;impdp.par&lt;br /&gt;userid=system/&lt;pwd&gt;&lt;pwd&gt;@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;tables=SCOTT.EMP,SCOTT.DEPT,SCOTT.SALGRADE,SCOTT.BONUS&lt;br /&gt;DUMPFILE=dpump:expdpScott.dmp&lt;br /&gt;LOGFILE= dpump:impdpScott.log&lt;br /&gt;JOB_NAME=expfull&lt;br /&gt;TABLE_EXISTS_ACTION=replace&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;11 Set Instantiation of tables from Source (S) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Make sure SCN # is same for all the tables which are participating in streams.&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION('SCOTT.EMP');&lt;br /&gt;DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION('SCOTT.DEPT');&lt;br /&gt;DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION('SCOTT.SALGRADE');&lt;br /&gt;DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION('SCOTT.BONUS');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;DECLARE&lt;br /&gt;iscn NUMBER;&lt;br /&gt;BEGIN&lt;br /&gt;iscn:=DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();&lt;br /&gt;DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@MYDEV.ORACLEDB2.KRISH.COM (&lt;br /&gt;source_object_name =&gt; 'SCOTT.EMP',&lt;br /&gt;source_database_name =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;instantiation_scn =&gt; iscn);&lt;br /&gt;DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@MYDEV.ORACLEDB2.KRISH.COM (&lt;br /&gt;source_object_name =&gt; 'SCOTT.DEPT',&lt;br /&gt;source_database_name =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;instantiation_scn =&gt; iscn);&lt;br /&gt;DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@MYDEV.ORACLEDB2.KRISH.COM (&lt;br /&gt;source_object_name =&gt; 'SCOTT.SALGRADE',&lt;br /&gt;source_database_name =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;instantiation_scn =&gt; 'iscn');&lt;br /&gt;DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@MYDEV.ORACLEDB2.KRISH.COM (&lt;br /&gt;source_object_name =&gt; 'SCOTT.BONUS',&lt;br /&gt;source_database_name =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;instantiation_scn =&gt; 'iscn');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;12 Export, import of tables (Data) from Source(S) to Target (T) &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;expdp parfile=expdp.par&lt;br /&gt;&lt;br /&gt;expdp.par&lt;br /&gt;userid=system/&lt;pwd&gt;&lt;pwd&gt;@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;Tables=SCOTT.EMP,SCOTT.DEPT,SCOTT.SALGRADE,SCOTT.BONUS,&lt;br /&gt;DUMPFILE=dpump:exp_Scott_data.dmp&lt;br /&gt;LOGFILE= dpump:exp_Scott_data.log&lt;br /&gt;JOB_NAME=exp_job&lt;br /&gt;&lt;br /&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;impdp parfile=impdp.par&lt;br /&gt;&lt;br /&gt;impdp.par&lt;br /&gt;userid=system/&lt;pwd&gt;&lt;pwd&gt;@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;Tables=SCOTT.EMP,SCOTT.DEPT,SCOTT.SALGRADE,SCOTT.BONUS,&lt;br /&gt;DUMPFILE=dpump:exp_Scott_data.dmp&lt;br /&gt;LOGFILE= dpump:imp_soctt_data.log&lt;br /&gt;JOB_NAME=imp_job&lt;br /&gt;TABLE_EXISTS_ACTION=APPEND&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;13 Grant object privileges to stream admin user (T) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The apply user must have all grants/permissions to perform DDL and DML operations on the objects.&lt;br /&gt;&lt;br /&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect &lt;a href="mailto:SCOTT/tiger@MYDEV.ORACLEDB2.KRISH.COM"&gt;SCOTT/tiger@MYDEV.ORACLEDB2.KRISH.COM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;GRANT ALL ON SCOTT.EMP to strmadmin;&lt;br /&gt;GRANT ALL ON SCOTT.DEPT to strmadmin;&lt;br /&gt;GRANT ALL ON SCOTT.SALGRADE to strmadmin;&lt;br /&gt;GRANT ALL ON SCOTT.BONUS to strmadmin;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;14 Configure apply process on Target (T) &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.EMP',&lt;br /&gt;streams_type =&gt; 'apply',&lt;br /&gt;streams_name =&gt; 'streams_apply',&lt;br /&gt;queue_name =&gt;&lt;br /&gt;'strmadmin.STREAMS_QUEUE_ORCL_MYDEV,&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.DEPT',&lt;br /&gt;streams_type =&gt; 'apply',&lt;br /&gt;streams_name =&gt; 'streams_apply',&lt;br /&gt;queue_name =&gt;&lt;br /&gt;'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.SALGRADE',&lt;br /&gt;streams_type =&gt; 'apply',&lt;br /&gt;streams_name =&gt; 'streams_apply',&lt;br /&gt;queue_name =&gt;&lt;br /&gt;'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_STREAMS_ADM.ADD_TABLE_RULES(&lt;br /&gt;table_name =&gt; 'SCOTT.BONUS',&lt;br /&gt;streams_type =&gt; 'apply',&lt;br /&gt;streams_name =&gt; 'streams_apply',&lt;br /&gt;queue_name =&gt;&lt;br /&gt;'strmadmin.STREAMS_QUEUE_ORCL_MYDEV',&lt;br /&gt;include_dml =&gt; true,&lt;br /&gt;include_ddl =&gt; true,&lt;br /&gt;source_database =&gt; 'ORCL.ORACLEDB1.KRISH.COM',&lt;br /&gt;inclusion_rule =&gt; true);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;--Set parameter disable on error &amp;amp; parallelism on Target database&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_APPLY_ADM.SET_PARAMETER(&lt;br /&gt;apply_name =&gt; 'streams_apply',&lt;br /&gt;parameter =&gt; 'disable_on_error',&lt;br /&gt;value =&gt; 'n');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;dbms_apply_adm.set_parameter(‘streams_apply’,’parallelism’,’4’);&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;strong&gt;15 Start the apply process on Target (T) &amp;amp; Capture process on source(S)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Target(MYDEV.ORACLEDB2.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@MYDEV.ORACLEDB2.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_APPLY_ADM.START_APPLY(&lt;br /&gt;apply_name =&gt; 'streams_apply');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;Source(ORCL.ORACLEDB1.KRISH.COM):&lt;br /&gt;&lt;br /&gt;connect strmadmin/strmadmin@ORCL.ORACLEDB1.KRISH.COM&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_CAPTURE_ADM.START_CAPTURE(&lt;br /&gt;capture_name =&gt;&lt;br /&gt;'STREAMS_CAPTURE');&lt;br /&gt;END;&lt;br /&gt;/&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-8027259930010951209?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/8027259930010951209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2008/12/streams-setup.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/8027259930010951209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/8027259930010951209'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2008/12/streams-setup.html' title='Streams 10gR2 Implementation -Table Level'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654730833842815256.post-5401607517090276108</id><published>2008-12-15T08:32:00.001-08:00</published><updated>2009-02-27T16:21:51.000-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>Implementing Streams Heartbeat Table</title><content type='html'>&lt;div align="justify"&gt;&lt;a name="PURPOSE"&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;Heartbeat table in a Streams replication is especially useful for databases that have a low activity rate because you can make sure the replication environment is working properly even if there are not many replicated changes. It ensures that changes are being replicated in a Streams replication environment.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Prerequisites:&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;/div&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div align="justify"&gt;&lt;br /&gt;Create a table at the source site that includes a date or timestamp column and the global name of the database.&lt;br /&gt;&lt;br /&gt;Add a rule to capture changes to this table and propagate the changes to each target destination.&lt;br /&gt;&lt;br /&gt;Make sure that the target destination will apply changes to this table as well.&lt;br /&gt;&lt;br /&gt;Set up an automated job to update this table at the source site periodically, for example every minute.&lt;br /&gt;&lt;br /&gt;Following is an example configuration we could use as a heartbeat table.&lt;br /&gt;&lt;br /&gt;--Create a table at the source database.&lt;br /&gt;--Enable Supplemental logging for the table.&lt;br /&gt;--Instantiate the table.&lt;br /&gt;--Add this table to capture,apply,propagation rules.&lt;br /&gt;--Configure an automated job to update the heartbeat.&lt;br /&gt;&lt;br /&gt;create table SCOTT.HEARTBEAT(a number primary key, b date);&lt;br /&gt;create sequence HEART_SEQ start with 1;&lt;br /&gt;&lt;br /&gt;-- TO SUBMIT A JOB THAT RUN AN INSERT EVERY 60 SECONDS&lt;br /&gt;variable jobno number;&lt;br /&gt;begin&lt;br /&gt;dbms_job.submit(:jobno,'insert into SCOTT.HEARTBEAT values (HEART_SEQ.nextval, sysdate);',&lt;br /&gt;sysdate, 'sysdate+60/(60*60*24)');&lt;br /&gt;commit;&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;-- Add this table to the streams configuration&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654730833842815256-5401607517090276108?l=krish-dba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://krish-dba.blogspot.com/feeds/5401607517090276108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://krish-dba.blogspot.com/2008/12/coming-soon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/5401607517090276108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654730833842815256/posts/default/5401607517090276108'/><link rel='alternate' type='text/html' href='http://krish-dba.blogspot.com/2008/12/coming-soon.html' title='Implementing Streams Heartbeat Table'/><author><name>Krishna Ramavath</name><uri>http://www.blogger.com/profile/10559149349784447921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_S4Vuh8pePCA/SWASulcBDCI/AAAAAAAAAAM/3RvKEL6zghU/S220/144945.jpg'/></author><thr:total>0</thr:total></entry></feed>
