oracle stream参数,Oracle Stream概述与配置

Oracle Stream概述与配置

介绍一下Streams和goldengate的比较

1.异构复制

streams  仅支持oracle-oracle

GG 支持不同平台的复制

2.capture方式

streams  通过logmnr的方式抽取redo和archivelog中的数据,效率相比更低一些

GG     通过GG独有的方式抽取内存、redo、archivelog中数据,效率相比更高一些

3.收集数据

streams Oracle专有后台进程

GG 外部进程(extract/replicat)

4.内存分配

Streams  SGA(stream pool)

GG  OS memory

5.事务 – 数据收集阶段(源数据库)

Streams 所有的事务(commit,uncommited)

GG 提交的事务

6.数据应用阶段(目标数据库)

Sreams 过滤掉uncommited数据

GG 收到的数据都是提交过的,直接应用。

7.事务的顺序

Streams SCN的顺序

GG commit先后顺序

下面进行1个DEMO演示Stream配置部署:

step1. 参数配置

Source-Target:

archive log listalter system set aq_tm_processes=2 scope=both; alter system set streams_pool_size=200M scope=spfile; alter database add supplemental log data;alter system set "_job_queue_interval"=1 scope=spfile;startup force;

step2. 创建Streams管理用户

Source-Target:

create tablespace tbs_stream datafile size 100M;create user strmadmin identified by strmadmin default tablespace tbs_stream;grant dba to strmadmin;

step3. 创建业务用户

Source-Target:

create tablespace tianbaobao datafile size 100M;create user tianbaobao identified by tianbaobao default tablespace tbs_stream;grant dba to tianbaobao;

step4. 配置环境tnsnames.ora

Source-Target:

SOURCEDB =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = source.ht8888.ht3)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = sourcedb)    )  )

TARGETDB =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = target.ht8888.ht3)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = targetdb)    )  )

step5.创建DBlink(如果不配置双向复制,无需配置目标到源的DBlink)

create database link strm_link connect to strmadmin identified by strmadmin using 'targetdb';

step6.创建Streams Queue

Source-Target:

sqlplus strmadmin/strmadmin@sourcedbbegin dbms_streams_adm.set_up_queue( queue_table => 'source_queue_table', queue_name => 'source_queue'); end; /

sqlplus strmadmin/strmadmin@targetdbbegin dbms_streams_adm.set_up_queue( queue_table => 'target_queue_table', queue_name => 'target_queue'); end; /

step7.源创建捕获进程

connect strmadmin/strmadmin@sourcedbbegin dbms_streams_adm.add_schema_rules(schema_name => 'tianbaobao',  streams_type => 'capture', streams_name => 'capture_source', queue_name => 'strmadmin.source_queue', include_dml => true, include_ddl => true, inclusion_rule => true); end; /

step8.源创建传播进程

connect strmadmin/strmadmin@sourcedbbegin dbms_streams_adm.add_schema_propagation_rules( schema_name => 'tianbaobao',  streams_name => 'source_to_target', source_queue_name => 'strmadmin.source_queue', destination_queue_name => 'strmadmin.target_queue@strm_link', include_dml => true, include_ddl => true, source_database => 'sourcedb', inclusion_rule => true,queue_to_queue => true); end; /

#修改propagation休眠时间为0,表示实时传播LCR。

connect strmadmin/strmadmin@sourcedbbegin dbms_aqadm.alter_propagation_schedule( queue_name => 'source_queue', destination => 'strm_link', destination_queue => 'target_queue',latency => 0); end; /

step9.目标创建应用进程

connect strmadmin/strmadmin@sourcedbbegin dbms_streams_adm.add_schema_rules( schema_name => 'tianbaobao',  streams_type => 'apply', streams_name => 'apply_target', queue_name => 'strmadmin.target_queue', include_dml => true, include_ddl => true, source_database => 'sourcedb', inclusion_rule => true); end; /

step10.数据库直接设置SCN的方式进行实例化

---获取源库互置用户的SCN

connect strmadmin/strmadmin@sourcedb set serveroutput on                 DECLARE        iscn NUMBER;

-- Variable to hold instantiation SCN valueBEGIN                                                                                                                          iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();                                                                          DBMS_OUTPUT.PUT_LINE ('Instantiation SCN is: ' || iscn);END;                                                     /

---设置为目标库互置用户的SCN

connect streamadmin/streamadmin@targetdbBEGIN                                                                                                                       DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN(        source_schema_name => 'TIANBAOBAO',                                                                                           source_database_name => 'SOURCEDB',        instantiation_scn => &iscn);END;                                                                                                                    /

step11.启动捕获和应用进程

connect strmadmin/strmadmin@sourcedbexec dbms_capture_adm.start_capture(capture_name  => 'capture_source');

connect strmadmin/strmadmin@targetexec dbms_apply_adm.start_apply(apply_name  => 'apply_target');

step12.创建测试表进程测试

Source:sqlplus tianbaobao/tianbaobao@sourcedbSQL>  create table tb30(x int);

Table created.

SQL> insert into tb30 values (1);

1 row created.

SQL> commit;

Commit complete.

SQL> alter table tb30 add y int ;

Table altered.

SQL> insert into tb30 values (2,2);

1 row created.

SQL> commit;

Commit complete.

SQL>

Traget:sqlplus tianbaobao/tianbaobao@targetdbSQL> select * from tb30;

X     Y---------- ----------  1  2     2

SQL>

step13 .常用命令

select CAPTURE_NAME,QUEUE_NAME,STATUS,CAPTURED_SCN,APPLIED_SCN from dba_capture;

select PROPAGATION_NAME,SOURCE_QUEUE_OWNER,SOURCE_QUEUE_NAME,DESTINATION_QUEUE_NAME,DESTINATION_DBLINK,STATUS from dba_propagation;

select APPLY_NAME,ERROR_NUMBER,STATUS from dba_apply;

select APPLY_NAME,QUEUE_NAME,MESSAGE_NUMBER,ERROR_NUMBER,ERROR_MESSAGE from dba_apply_error;

exec dbms_capture_adm.stop_capture(capture_name  => 'capture_source');

exec dbms_apply_adm.stop_apply(apply_name  => 'apply_target');

exec DBMS_STREAMS_ADM.remove_streams_configuration();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值