oracle Streams如何创建单源多向复制环境

这节我们将复制环境构建的稍稍复杂一点,这次不再做两台数据库间的复制了,再加进来一个新的数据库,三个数据库间同步数据。

一、 需求描述

设定条件如下:

数据库 sid : jssweb ,jssstr 和jssbak

复制jssweb数据库中schema:member下的usr_user到jssstr数据库中的member下,并更名为users;

复制jssweb数据库中schema:member下的dt_tbl1、dt_tbl2和dt_tmp三表到jssbak数据库中的schema:member下;

全部 源库本地捕获 ,单向同步。

同步 DML/ DDL 操作

二、 准备工作

与前面章节相同,不再重复了。

三、 创建队列和数据库链

首先在JSSWEB操作,创建队列表和连接到jssstr数据库的dblink:

SQL> conn strmadmin/strmadmin

Connected.

JSSWEB> set sqlprompt "JSSWEB> "

JSSWEB> exec dbms_streams_adm.set_up_queue();

PL/SQL procedure successfully completed.

JSSWEB> create database link jssstr connect to strmadmin identified by strmadmin using ¨jssstr_172.25.13.231¨;

Database link created.

JSSWEB> select sysdate from dual@jssstr;

SYSDATE

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

24-3 月 -09

JSSSTR 端操作,创建队列表和连接到test08数据库的dblink:

SQL> conn strmadmin/strmadmin

Connected.

JSSSTR> set sqlprompt "JSSSTR> "

JSSSTR> exec dbms_streams_adm.set_up_queue();

PL/SQL procedure successfully completed.

JSSSTR> create database link jssbak connect to strmadmin identified by strmadmin using ¨jssbak_172.25.13.227¨;

Database link created.

JSSSTR> select sysdate from dual@jssbak;

SYSDATE

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

24-MAR-09

最后在JSSBAK端操作,创建队列表和连接到jssweb数据库的dblink(为了后面执行impdp)

SQL> set sqlprompt "JSSBAK> "

JSSBAK> conn strmadmin/strmadmin

Connected.

JSSBAK> exec dbms_streams_adm.set_up_queue;

PL/SQL procedure successfully completed.

JSSBAK> create database link jssweb connect to strmadmin identified by strmadmin using ¨jssweb_172.25.13.229¨;

Database link created.

JSSBAK> select sysdate from dual@jssweb;

SYSDATE

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

24-MAR-09

由于JSSBAK为新建库,因此我们创建一个新的用户和表空间,用来存放复制的数据:

JSSBAK> create tablespace webdata datafile ¨ /data/ oracle/ oradata/jss bak / webdata01.ora¨ size 200m;

Tablespace created.

JSSBAK> create user member identified by member default tablespace webdata quota unlimited on webdata;

User created.

JSSBAK> grant connect,resource to member;

Grant succeeded.

JSSBAK> revoke unlimited tablespace from member;

Revoke succeeded.

四、 简单方式配置复制环境

一般有两种方式配置,一种是通过DBMS_CAPTURE_ADM、DBMS_PROPAGATION_ADM、DBMS_APPLY_ADM几个包分别创建捕获、传播和应用进程,相对来说更加灵活,但是操作比较复杂,另外一种就是直接借助DBMS_STREAMS_ADM包创建,这种方式相对比较简单,这里我们演示通过这种方式创建。

另外,本章中使用的环境延续了前面章节,初始化环境部分不再重复,如果你没有浏览本系列的其它文章,直接阅读本篇过程中无法理解部分数据来源,建议首先阅读前面部分相关章节。

下列操作如非特别说明,均是以strmadmin身份执行。

1、 Jssweb 端配置propagation进程

JSSWEB> BEGIN

2 DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(

3 schema_name => ¨member¨,

4 streams_name => ¨web_to_str¨,

5 source_queue_name => ¨strmadmin.streams_queue¨,

6 destination_queue_name => ¨strmadmin.streams_queue@jssstr.jss.cn¨,

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2024-12-03 15:24:50

oracle Streams如何创建单源多向复制环境的相关文章

oracle Streams如何创建schema级复制环境

Schema 级的复制可以通过DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS创建,经过前面表空间级的试练,接着创建schema级的复制环境还是比较简单的. 本章示例继续沿用前章中的环境(主要是oracle环境,之前的复制环境已被清除),并设定环境如下: 源数据库 sid : jssweb ,目标库 : jssstr : 复制schema:member,同步DML,DDL操作: 本地捕获,双向同步(又变了哟,又改为本地捕获了): DBMS_STREAMS_ADM.MAINTAI

oracle Streams如何创建tables级复制环境

你应该还有印象,我们在第一部分第二节的时候就已经演示了创建表级复制环境,对比全库/表空间级或schema级的复制,现在回过头来看,你可能会觉着怎么表级的复制环境这么复杂呢?其实不是这样,并非表级复制环境复杂,我们在第一部分第二章演示的正是streams实际配置时执行的过程(大部分步骤吧),如果你直接使用DBMS_STREAMS_ADM.MAINTAIN_TABLES过程创建的话,类似于schemas的复制,也就是执行一个过程的事情. 这里一方面为了给大家演示,另外一方面也是加深大家的理解,在本部

oracle Streams创建表空间级环境概述:初始化

DBMS_STREAMS_ADM 中提供了三种创建表空间级复制环境的过程: MAINTAIN_SIMPLE_TTS :单个表空间的复制 MAINTAIN_TTS :多个表空间的复制 PRE_INSTANTIATION_SETUP 和POST_INSTANTIATION_SETUP:多个表空间的复制 MAINTAIN_SIMPLE_TTS 和MAINTAIN_TTS两过程都会自动添加否定规则集过滤streams不支持的数据库对象,PRE_INSTAINTIATION_SETUP和POST_INST

oracle Streams基础:传播进程

本节主要描述传播的工作流程,以及一些相关的特性(处理逻辑),内容同样枯燥,但三思认为有阅读的价值.在整个streams复制环境中,propagation进程负责将源端的修改队列复制到目标数据库. 1.LCR分段 Streams 通过队列分段传递messages.ANYDATA类型的队列能用来分段传递几乎所有类型的消息,这种类型的队列被定义为:ANADATA QUEUE.注意一个队列中只能存储一种指定类型的消息,STREAMS默认总是使用ANYDATA QUEUE. Streams 中两种消息类型

oracle Streams实践:如何创建全库复制

正如前面介绍的那样,对于数据库级复制,oracle提供了两种方式: A .MAINTAIN_GLOBAL B .PRE_INSTANTIATION_SETUP.POST_INSTANTIATION_SETUP Maintain_global适用于中小型数据库创建,而PRE_INSTANTIATION_SETUP+POST_INSTANTIATION_SETUP适用于大型数据库的创建,这里我们演示通过 PRE_INSTANTIATION_SETUP 和POST_INSTANTIATION_SETU

oracle Streams实践:如何移除Streams复制环境

四. 清除Streams复制环境 一方面是为了方便后面的测试环境搭建,一方面也是因为10g中Streams复制环境的移除非常简单,因此将此做为本章最后一小节. 要移除整个复制环境非常简单,只需在源端目标端以STREAMS管理员帐号登陆,并分别执行 dbms_streams_adm.remove_streams_configuration ,如例 : JSSWEB> conn strmadmin/strmadmin Connected. JSSWEB > exec dbms_streams_ad

oracle Streams创建表空间级环境概述:创建和移除

二. 创建复制环境 创建非常简单,只需要在目标端执行下列过程即可(如果是有多个表空间要复制,只需要再添加t_names(2),t_names(3)...t_names(n)即可): JSSSTR> DECLARE 2 t_names DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET; 3 BEGIN 4 -- Tablespace names 5 t_names(1) := ¨WEBDATA¨; 6 DBMS_STREAMS_ADM.MAINTAIN_TTS(

oracle Streams实践:准备工作

二.初始化环境 在准备创建streams复制环境之前,还有一些准备工作需要我们进行,如下: 1.配置管理员帐户 为了便于管理,不建议使用sys/system用户,也不建议使用system表空间,推荐一切都新建.用户需要在source/target端分别创建,并必须具有相关的管理权限,本例中以strmadmin为例. a>. 首先创建新的表空间 JSSWEB> create tablespace stream_tbs datafile ¨ /data/oradata/jssweb/ stream

oracle Streams基础:如何捕获进程

前一章我们实践了一把streams同步单表的过程,看起来很简单是不是(如果你觉着复杂,那不是因为streams本身操作复杂,而是为了配置好streams前期的准备工作较复杂),事实上也确实很简单,由小能见大,我们从上述示例中应该也能看出streams的操作方式就是捕获(capture)->传播(propagation)->应用(apply),不管是表也好,schema也好,database也好,都是遵循这个操作过程,下面逐一介绍捕获传播和应用进程,俺尽可能做到清晰简单直白,但限于个人理解和自身