百度空间 | 百度首页 
 
查看文章
 
Oracle Streams 实时复制用户数据到另外一个用户下(四)
2009-06-17 14:09

--

-- Set up queue "STRMREP.APP_QUE_ERATING"

--

SQL> BEGIN

   dbms_streams_adm.set_up_queue(

     queue_table => 'STRMREP.TAB_APP_QUE_ERATING',

     storage_clause => NULL,

     queue_name => 'STRMREP.APP_QUE_ERATING',

     queue_user => '');

END;

/

--

-- APPLY changes for schema ENCLE

--

SQL> BEGIN

   dbms_streams_adm.add_schema_rules(

     schema_name => 'ENCLE',

     streams_type => 'APPLY',

     streams_name => 'APP_ERATING',

     queue_name => 'STRMREP.APP_QUE_ERATING',

     include_dml => TRUE,

     include_ddl => TRUE,

     include_tagged_lcr => TRUE,

     source_database => 'ESUITE.NET',

     inclusion_rule => TRUE,

     and_condition => ':lcr.get_compatible() <= dbms_streams.compatible_10_2');

END;

/

--

-- APPLY changes for schema SCOTT, SCOTT用户要自动同步到SCOTTNEW用户下

-- 需要用到DBMS_STREAMS_ADM.RENAME_SCHEMA 过程.

SQL> DECLARE

vi_dml_rule VARCHAR2(40);

vi_ddl_rule VARCHAR2(40);

BEGIN

   dbms_streams_adm.add_schema_rules(

     schema_name => 'SCOTT',

     streams_type => 'APPLY',

     streams_name => 'APP_ERATING',

     queue_name => 'STRMREP.APP_QUE_ERATING',

     include_dml => TRUE,

     include_ddl => TRUE,

     include_tagged_lcr => TRUE,

     source_database => 'ESUITE.NET',

     dml_rule_name => vi_dml_rule,

ddl_rule_name => vi_ddl_rule,

     inclusion_rule => TRUE,

     and_condition => ':lcr.get_compatible() <= dbms_streams.compatible_10_2');

    

    /* wangnc added */

    DBMS_STREAMS_ADM.RENAME_SCHEMA(

rule_name => vi_dml_rule,

from_schema_name => 'SCOTT',

to_schema_name => 'SCOTTNEW'

);

END;

/

--

-- Get tag value to be used for Apply

--

SQL> DECLARE

   found    BINARY_INTEGER := 0;

   tag_num NUMBER;

BEGIN

   -- Use the apply object id as the tag

   SELECT o.object_id INTO tag_num

   FROM dba_objects o

   WHERE o.object_name= 'APP_ERATING' AND

         o.object_type='APPLY';

   LOOP

     BEGIN

       found := 0;

       SELECT 1 INTO found FROM dba_apply

       WHERE apply_name != 'APP_ERATING' AND

             apply_tag = hextoraw(tag_num);

     EXCEPTION WHEN no_data_found THEN

       EXIT;

     END;

     EXIT WHEN (found = 0);

     tag_num := tag_num + 1;

   END LOOP;

   -- alter apply

   dbms_apply_adm.alter_apply(

     apply_name => 'APP_ERATING',

     apply_tag => hextoraw(tag_num));

END;

/

--

-- Start apply process APP_ERATING

--

SQL> BEGIN

   dbms_apply_adm.set_parameter(apply_name => 'APP_ERATING', parameter => 'DISABLE_ON_ERROR', value => 'N');

   dbms_apply_adm.start_apply(

     apply_name => 'APP_ERATING');

EXCEPTION WHEN OTHERS THEN

   IF sqlcode = -26666 THEN NULL;   -- APPLY process already running

   ELSE RAISE;

   END IF;

END;

/

----------------------------------------------------------------------------------------------

-- connect as streams administrator to source site

SQL> CONNECT strmrep/xxx@db_esuite

--

-- Enable propagation schedule for "STRMREP.CAP_QUE_ERATING" to YITIAN.LK

--

SQL> BEGIN

   dbms_aqadm.enable_propagation_schedule(

     queue_name => 'STRMREP.CAP_QUE_ERATING',

     destination => 'YITIAN.LK',

     destination_queue => 'STRMREP.APP_QUE_ERATING');

EXCEPTION WHEN OTHERS THEN

   IF sqlcode = -24064 THEN NULL; -- propagation already enabled

   ELSE RAISE;

   END IF;

END;

/

----------------------------------------------------------------------------------------------


至此全部结束.

--End--

类别:Oracle Ha | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu