<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Deep Thinking in Our Life &#187; Oracle Streams</title>
	<atom:link href="http://deepthinking99.wordpress.com/category/oracle-streams/feed/" rel="self" type="application/rss+xml" />
	<link>http://deepthinking99.wordpress.com</link>
	<description>Lets Explore the Information Technology together . . .</description>
	<lastBuildDate>Thu, 17 Dec 2009 10:16:03 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='deepthinking99.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/86e6e4c1f636efd2eb20061bf9253f60?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Deep Thinking in Our Life &#187; Oracle Streams</title>
		<link>http://deepthinking99.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://deepthinking99.wordpress.com/osd.xml" title="Deep Thinking in Our Life" />
		<item>
		<title>Configure Oracle Streams . . .</title>
		<link>http://deepthinking99.wordpress.com/2008/09/20/configure-oracle-streams/</link>
		<comments>http://deepthinking99.wordpress.com/2008/09/20/configure-oracle-streams/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 05:02:29 +0000</pubDate>
		<dc:creator>Ida Bagus Enderajana</dc:creator>
				<category><![CDATA[Oracle Streams]]></category>

		<guid isPermaLink="false">http://deepthinking99.wordpress.com/?p=51</guid>
		<description><![CDATA[Architecture
 The  capture function is performed by capture background process cnnn (where nnn is a capture  process number, for example c001). Capture process components are: reader,  preparer, and builder servers. Some of the possible capture process states  are:
- CAPTURING CHANGES: process scans the redo logs for changes that evaluate to  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deepthinking99.wordpress.com&blog=4894307&post=51&subd=deepthinking99&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="MsoNormal"><span class="parahead11">Architecture</span></p>
<p class="MsoNormal"><span class="parahead11"> <span style="font-weight:normal;">The  capture function is performed by capture background process <span class="SpellE">cnnn</span> (where <span class="SpellE">nnn</span> is a capture  process number, for example c001). Capture process components are: reader,  preparer, and builder servers. Some of the possible capture process states  are:</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">- </span></span><span style="font-family:Arial;">CAPTURING CHANGES: <span style="color:black;">process scans the redo logs for changes that evaluate to  TRUE against the capture process <span>rule set</span>s<span class="parahead11"><span style="font-weight:normal;"></span></span></span></span></p>
<p class="MsoNormal"><span style="font-family:Arial;color:black;">-<span class="parahead11"><span style="font-weight:normal;"> PAUSED FOR FLOW CONTROL:  there is a delay while <span class="SpellE">LCR’s</span> are <span class="SpellE">enqueued</span></span></span></span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><span class="parahead11"><span style="font-weight:normal;">- CREATING LCR: <span class="GramE">redo<span> </span>log</span> entries are converted to LCR</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> Propagation is using job queue background process  (<span class="SpellE">jnnn</span>) to propagate messages from the source to the  destination queue.</span></span><span style="font-family:Palatino-Roman;color:black;"></span></p>
<p class="MsoNormal"><span class="parahead11"> <span style="font-weight:normal;">The  apply components are coordinator (corresponding background process is <span class="SpellE">annn</span>) that <span class="GramE">gets<span> </span>transactions</span> from the apply process reader and passes them to  apply servers. The apply process uses parallel execution servers (<span class="SpellE">pnnn</span>). </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">Some  of the apply states are: </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">-  SPILLING: unapplied messages are spilled from memory to hard disk </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">-  DEQUEUE MESSAGES: <span class="SpellE">dequeuing</span> messages</span></span></p>
<p class="MsoNormal"><span class="parahead11"> Configuration</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">The single PL/SQL procedure  &#8211; DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS compleetely sets up basic schema level  replication. Certain tasks must be completed, though, before this procedure runs  in step 8. </span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span><strong><span style="font-family:Arial;">1.</span></strong><span style="font-family:Arial;"> Configure source database to run in ARCHIVELOG  mode</span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">2.</span></strong><span style="font-family:Arial;"> Set up Streams administrator STRMADMIN on both  databases (source and target)</span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">3</span></strong><span style="font-family:Arial;">. Adjust initialization parameters on both databases  for Streams replication</span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">4.</span></strong><span style="font-family:Arial;"> Create database link from source  (ORCLA.WORLD)<span> </span>to target (ORCLB.WORLD)  database</span></p>
<p class="MsoBodyText"><strong><span style="font-size:12pt;">5.</span></strong><span style="font-size:12pt;"> Create database link from target (ORCLB.WORLD)<span> </span>to source (ORCLA.WORLD) database </span></p>
<p class="MsoBodyText"><span style="font-size:12pt;">(This link is needed because  I will use the network Data Pump export/import which is not using an export dump  file; standard export/import using dump file is also possible  )</span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">6</span></strong><span style="font-family:Arial;">. (Recommended) Create directory on source machine  (It will contain generated replication script.)</span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">7.</span></strong><span style="font-family:Arial;">( Recommended) Run DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS  with </span><span class="SpellE"><span style="font-family:'Courier New';">perform_actions</span></span><span style="font-family:'Courier New';"> </span><span style="font-family:Arial;"><span> </span>parameter set to FALSE on source  database to generate the replication script. This is a dry run to verify the  script’s correctness and avoid time-consuming replication cleanup (in case the  replication setup script fails.) </span><span style="font-family:'Courier New';"></span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">8</span></strong><span style="font-family:Arial;">. Run DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS procedure on  the source database with </span><span class="SpellE"><span style="font-family:'Courier New';">perform_actions</span></span><span style="font-family:Arial;"> parameter set to TRUE. This will <span class="SpellE">startt</span> the replication setup.</span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><strong><span style="font-family:Arial;">9.</span></strong><span style="font-family:Arial;"> Verify  that DDL and DML changes on ORCLA.WORLD are propagated to ORCLB.WORLD<span> </span></span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><span class="parahead11">Steps in  detail</span><span style="font-family:Arial;"></span></p>
<p class="MsoNormal" style="margin-right:-.5in;"><span style="font-family:Arial;"> For steps <strong>1 – 4,</strong> please refer to the <span class="SpellE">Mishra&#8217;s</span> article mentioned above. They are  identical.</span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><span style="font-family:Arial;"> </span><strong><span style="font-family:Arial;">5. </span></strong><span style="font-family:Arial;">Create  a database link </span><span style="font-family:Arial;">on target database: </span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><span style="font-family:'Courier New';">connect <span class="SpellE">strmadmin/strmadmin@ORCLB.world</span> </span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><span style="font-family:'Courier New';">CREATE DATABASE LINK  ORCLA.WORLD</span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><span style="font-family:'Courier New';">CONNECT TO STRMADMIN</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">IDENTIFIED BY  STRMADMIN</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">USING  ‘ORCLA.WORLD’;</span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">6. </span></strong><span style="font-family:Arial;">Create a directory on the source database where the  script generated by <span class="SpellE">dbms_streams_adm.maintain_schema</span> will be stored: </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">CONNECT <span class="SpellE">strmadmin/strmadmin@orcla.world</span></span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">CREATE OR REPLACE  DIRECTORY ADMIN AS &#8216;/home/oracle/Streams&#8217;;</span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;"> 7</span></strong><span style="font-family:Arial;">. Generate script <span class="SpellE">schema_replication.sql</span> in Oracle admin directory<span> </span></span></p>
<p class="MsoNormal"><span style="font-family:Arial;">(/home/oracle/Streams on  Linux):</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">CONN <span class="SpellE">strmadmin/strmadmin@orcla.world</span></span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">BEGIN</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span>DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">schema_names</span><span> </span>=&gt;  <span> </span>&#8216;<span class="SpellE">scott</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">source_database</span><span> </span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">orcla.world</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">destination_database</span><span> </span>=&gt;  <span> </span>&#8216;<span class="SpellE">orclb.world</span>&#8216;,</span></p>
<p class="MsoNormal" style="margin-right:-1.25in;"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">capture_name</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">capture_scott</span>&#8216;, </span></p>
<p class="MsoNormal" style="margin-right:-81pt;"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">capture_queue_table</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">rep_capture_queue_table</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">capture_queue_name</span><span> </span>=&gt;  <span> </span>&#8216;<span class="SpellE">rep_capture_queue</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">capture_queue_user</span><span> </span>=&gt;  <span> </span>null,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">apply_name</span><span> </span>=&gt;  <span> </span>&#8216;<span class="SpellE">apply_scott</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">apply_queue_table</span><span> </span>=&gt;  <span> </span><span> </span>&#8216;<span class="SpellE">rep_dest_queue_table</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">apply_queue_name</span><span> </span>=&gt;  <span> </span>&#8216;<span class="SpellE">rep_dest_queue</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">apply_queue_user</span><span> </span>=&gt;  <span> </span>null,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">propagation_name</span><span> </span>=&gt;  <span> </span>&#8216;<span class="SpellE">prop_scott</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">log_file</span><span> </span>=&gt;  <span> </span>&#8216;<span class="SpellE">exp.log</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">bi_directional</span><span> </span>=&gt;  <span> </span>false,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">include_ddl</span><span> </span>=&gt;  <span> </span>true,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span>instantiation<span> </span>=&gt;  <span> </span><span> </span><span class="SpellE">dbms_streams_adm.instantiation_schema_network</span>, </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">perform_actions</span><span> </span>=&gt;  <span> </span>false,<span> </span><span> </span></span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">script_name</span><span> </span>=&gt;  <span> </span>&#8216;<span class="SpellE">schema_replication.sql</span>&#8216;, </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">script_directory_object</span> <span> </span>=&gt; <span> </span>&#8216;admin&#8217;</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span>);</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">END;</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">(A complete description of  parameters used is listed in Appendix.)</span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> The  /home/oracle/Streams/<span class="SpellE">schema_replication.sql</span> script now  contains commands to completely configure SCOTT schema replication. A brief  description of scripts contents follows:</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">- Supplemental logging data  is added for all tables in the SCOTT schema; it is required to log additional  data to redo logs if you want Streams to work properly</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">-  DBMS_STREAMS_ADM.SET_UP_QUEUE procedure is run to create capture queue and  capture table</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">-  DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES is run to add rules to the  positive rule set for propagation; this is queue-to-queue propagation </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">- Propagation is temporarily  disabled</span></p>
<p class="MsoNormal" style="margin-right:-81pt;"><span style="font-family:Arial;">- DBMS_STREAMS_ADM.ADD_SCHEMA_RULES is run to add  rules to capture process</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">-<span> </span><span class="SpellE">Datapump</span> schema mode import (network) is run from  ORCLB.WORLD database ( SCOTT schema is exported from ORCLA.WORLD and imported  into ORCLB.WORLD; DBMS_DATAPUMP package is used for this  purpose)</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">- Capture process is started  on ORCLA.WORLD database</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">- Apply queue REP_DEST_QUEUE  on the target database is configured using the DBMS_STREAMS_ADM.SET_UP_QUEUE  procedure</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">- Schema rules for the apply  process are added (DBMS_STREAMS_ADM.ADD_SCHEMA_RULES procedure is executed ) </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">- A tag is added to apply  process and apply process is started</span></p>
<p class="MsoNormal"><span style="font-family:Arial;">- Propagation is  enabled</span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">8.</span></strong><span style="font-family:Arial;"> We will now execute MAINTAIN_SCHEMAS procedure; </span><span class="SpellE"><span style="font-family:'Courier New';">perform_actions</span></span><span style="font-family:'Courier New';"> parameter </span><span style="font-family:Arial;">is changed to TRUE.</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">BEGIN</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span>DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">schema_names</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">scott</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">source_directory_object</span><span> </span>=&gt; <span> </span>NULL,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">destination_directory_object</span> =&gt;  <span> </span>NULL,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">source_database</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">orcla.world</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">destination_database</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">orclb.world</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">capture_name</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">capture_scott</span>&#8216;, </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">capture_queue_table</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">rep_capture_queue_table</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">capture_queue_name</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">rep_capture_queue</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">capture_queue_user</span><span> </span>=&gt; <span> </span>null,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">apply_name</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">apply_scott</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">apply_queue_table</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">rep_dest_queue_table</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">apply_queue_name</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">rep_dest_queue</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">apply_queue_user</span><span> </span>=&gt; <span> </span>null,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">propagation_name</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">prop_scott</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">log_file</span><span> </span>=&gt; <span> </span>&#8216;<span class="SpellE">exp.log</span>&#8216;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">bi_directional</span><span> </span>=&gt; <span> </span>false,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">include_ddl</span><span> </span>=&gt; <span> </span>true,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span>instantiation<span> </span>=&gt; <span> </span><span class="SpellE">dbms_streams_adm.instantiation_schema_network</span>, </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">perform_actions</span><span> </span>=&gt; <span> </span>true<span> </span><span> </span></span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span>);</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">END;</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">/</span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">The execution of this  procedure will take some time, depending on the schema size, number of objects,  volume of data etc. When it completes all DML and DDL changes to tables in the  SCOTT schema on ORCLA.WORLD, the database will be propagated to ORCLB.WORLD  database. </span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span><span class="parahead11"></span></p>
<p class="MsoNormal"><span class="parahead11">Customization</span></p>
<p class="MsoNormal"><span class="parahead11"> </span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">I  will now customize replication setup to exclude EMP table from replication  (<span class="SpellE">Metalink</span> note 239623.1).<span> </span></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-indent:-.25in;">&lt;!&#8211;[if  !supportLists]&#8211;&gt;<span class="parahead11"><span style="font-weight:normal;"><span>1)<span style="font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-family:'Times New Roman';"> </span></span></span></span>&lt;!&#8211;[endif]&#8211;&gt;<span class="parahead11"><span style="font-weight:normal;">Find capture rule name for  schema:</span></span></p>
<p class="MsoNormal" style="margin-left:.25in;"><span class="parahead11"><span style="font-weight:normal;"><span> </span></span></span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">CONN <span class="SpellE">strmadmin/strmadmin@orcla.world</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">select <span class="SpellE">r.rule_name</span>, <span class="SpellE">r.rule_owner</span></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">from <span class="SpellE">dba_rule_set_rules</span> <span class="SpellE">rs</span>, <span class="SpellE">dba_capture</span> c , <span class="SpellE">dba_rules</span> r</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">where <span class="SpellE">c.rule_set_name</span> = <span class="SpellE">rs.rule_set_name</span></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">and <span class="SpellE">c.rule_set_owner</span> = <span class="SpellE">rs.rule_set_owner</span></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">and <span class="SpellE">rs.rule_name</span> = <span class="SpellE">r.rule_name</span></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">and <span class="SpellE">rs.rule_owner</span> = <span class="SpellE">r.rule_owner</span></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">and upper(<span class="SpellE">r.rule_condition</span>) like &#8216;%:DML%&#8217;; </span></span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">RULE_NAME<span> </span>RULE_OWNER</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&lt;</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">SCOTT15<span> </span>STRMADMIN</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">set long  100000</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">select <span class="SpellE">rule_condition</span></span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">from <span class="SpellE">dba_rules</span></span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">where <span class="SpellE">rule_name</span> = &#8216;SCOTT15&#8242;;</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">RULE_CONDITION</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span>((((:<span class="SpellE">dml.get_object_owner</span>()</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">= &#8216;SCOTT&#8217;) and  :<span class="SpellE">dml.get_source_database_name</span>() = &#8216;ORCLA.WORLD&#8217; ))  and</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">(:<span class="SpellE">dml.get_compatible</span>() &lt;=  dbms_streams.compatible_10_2))</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">2) Stop capture process on  ORCLA.WORLD ( similar to Advanced Replication <span class="SpellE"><span>quiesce</span></span></span></p>
<p class="MsoNormal"><span style="font-family:Arial;"><span> </span>operation ) to  allow for rule change:</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">begin</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">dbms_capture_adm.stop_capture</span>(‘<span class="SpellE">capture_scott</span>’);</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">end;</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">/<span> </span></span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">3) Alter capture rule to  exclude EMP table from replication</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">begin</span></p>
<p class="MsoNormal"><span class="SpellE"><span style="font-family:'Courier New';">dbms_rule_adm.alter_rule</span></span><span style="font-family:'Courier New';">(&#8216;SCOTT15&#8242;,</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">&#8216;(:<span class="SpellE">dml.get_object_owner</span>() = &#8221;SCOTT&#8221; and not &#8216;  ||</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">&#8216;:<span class="SpellE">dml.get_object_name</span>() = &#8221;EMP&#8221; and &#8216;  ||</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">&#8216;:<span class="SpellE">dml.is_null_tag</span>() = &#8221;Y&#8221; )&#8217;);</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">end;</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">/</span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">4) Start the capture  process: </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">begin</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"><span> </span><span class="SpellE">dbms_capture_adm.start_capture</span>(‘<span class="SpellE">capture_scott</span>’);</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">end;</span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';">/<span> </span></span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">Changes to <span class="SpellE">emp</span> table are now not propagated. </span></p>
<p class="MsoNormal"><span class="parahead11"> </span></p>
<p class="MsoNormal"><span class="parahead11"> </span></p>
<p class="MsoNormal"><span class="parahead11">Monitoring</span><span class="parahead11"><span style="font-weight:normal;color:#000000;"></span></span></p>
<p class="MsoNormal"><span class="parahead11"> </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">Replication is now fully  configured. DML and DDL changes are flowing from source to target <span class="SpellE">database.How</span> do we find what is happening with capture,  propagate and apply processes ? </span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><span style="font-family:Arial;">To find out the state of the  capture process: </span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">select state from <span class="SpellE">v$streams_capture</span>;</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">STATE</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">CAPTURING  CHANGES</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">To  find out total number of messages propagated on sending  side:</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">select <span class="SpellE">total_msgs</span> from <span class="SpellE">v$propagation_sender</span></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">TOTAL_MSGS</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></span><span style="font-family:'Courier New';"></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">15863766</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">To  find out what is the state of apply reader: </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">select state from <span class="SpellE">v$streams_apply_reader</span>; </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">STATE</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">&#8212;&#8212;&#8212;&#8212;&#8211;</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;font-family:'Courier New';">SPILLING</span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11">Conclusion</span></p>
<p class="MsoNormal"><span class="parahead11"> </span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">Oracle Streams is relatively new tool primarily  designed to help move real time data between databases. </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;">The  easy setup, possibility of light data transformation, and good performance make  it welcome addition to a <span class="SpellE">DBA&#8217;s</span> toolset.<span> </span></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"></span></span></p>
<p class="MsoNormal"><span class="parahead11"><span style="font-weight:normal;"> </span></span></p>
<p class="MsoNormal"><strong><span style="font-family:Arial;">LISTING/Definitions</span></strong></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS</span><span style="font-family:Arial;"> parameter description.</span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> <span> </span></span><span class="SpellE"><span style="font-family:'Courier New';">schema_names</span></span><span style="font-family:Arial;"> is the name of schema that will be propagated ( </span><span class="SpellE"><span style="font-family:'Courier New';">scott</span></span><span style="font-family:Arial;"> in this example ). </span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">perform_actions</span></span><span style="font-family:Arial;"> is the parameter that specifies if a script should  be actually executed. If the value is TRUE, then procedure actions will be  performed. If it is set to FALSE, then the procedure will only generate a  script. </span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">capture_name</span></span><span style="font-family:'Courier New';"> </span><span style="font-family:Arial;">is  the name of capture process configured to capture changes made on source  database.</span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">capture_queue_table</span></span><span style="font-family:Arial;"> is the name of the queue table for each queue used  by a capture process.</span></p>
<p class="MsoNormal"><span class="SpellE"><span> </span><span style="font-family:'Courier New';">capture_queue_name</span></span><span style="font-family:Arial;"> is<span> </span>the name of each queue used by a  capture process.</span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">capture_queue_user</span></span><span style="font-family:Arial;"> is set to NULL, meaning procedure will not grant any  privileges. </span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">propagation_name</span></span><span style="font-family:Arial;"> is the name of each propagation configured to  propagate changes.</span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">log_file</span></span><span style="font-family:Arial;"> is the name of the Data Pump export log  file.</span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">bi_directional</span></span><span style="font-family:Arial;"> is set to FALSE because we are creating one-way  replication from the source to the target database.</span></p>
<p class="MsoNormal"><span class="SpellE"><span style="font-family:'Courier New';">include_ddl</span></span><span style="font-family:Arial;"> is TRUE, which means both DML and DDL changes will  be replicated from the source to the target database. </span></p>
<p class="MsoNormal"><span style="font-family:'Courier New';"> instantiation</span><span style="font-family:Arial;"> is set to DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA. It  means that target schema instantiation will be done using Data Pump  export/import dump file.</span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">perform_actions</span></span><span style="font-family:Arial;"> is set to FALSE. Procedure is generating a script  that can be reviewed before the actual run happens.</span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">script_name</span></span><span style="font-family:Arial;"> is set to </span><span class="SpellE"><span style="font-family:'Courier New';">schema_replication.sql</span></span><span style="font-family:Arial;">. This script will be written to Oracle directory  object admin</span><span style="font-family:'Courier New';">. </span><span style="font-family:Arial;">It will contain all steps to configure replication  environment.</span></p>
<p class="MsoNormal"><span class="SpellE"> <span style="font-family:'Courier New';">script_directory_object</span></span><span style="font-family:'Courier New';"> </span><span style="font-family:Arial;">is  set to admin.</span><span style="font-family:'Courier New';"> </span><span style="font-family:Arial;">This is the name of Oracle directory object. </span></p>
<p class="MsoNormal"><span style="font-family:Arial;"> </span></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deepthinking99.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deepthinking99.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deepthinking99.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deepthinking99.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deepthinking99.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deepthinking99.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deepthinking99.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deepthinking99.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deepthinking99.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deepthinking99.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deepthinking99.wordpress.com&blog=4894307&post=51&subd=deepthinking99&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://deepthinking99.wordpress.com/2008/09/20/configure-oracle-streams/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1f3b6fbee19bb2cca5ced85efa030302?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepthinking99</media:title>
		</media:content>
	</item>
	</channel>
</rss>