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

Schema 级的复制可以通过DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS创建,经过前面表空间级的试练,接着创建schema级的复制环境还是比较简单的。

本章示例继续沿用前章中的环境(主要是oracle环境,之前的复制环境已被清除),并设定环境如下:

源数据库 sid : jssweb ,目标库 : jssstr ;

复制schema:member,同步DML,DDL操作;

本地捕获,双向同步(又变了哟,又改为本地捕获了);

DBMS_STREAMS_ADM.MAINTAIN_TTS 直接生成 配置 ;

STREAMS 管理员已经创建,源和目标端通讯用的数据库链也已经创建。

由于前面刚刚使用MAINTAIN_TTS做完表空间级的同步,因此这里准备工作可以都省掉了,如果你没有按照三思本文的介绍的顺序执行测试,务必先参考前章表空间级同步时的准备工作。

如果是完全按照三思介绍的步骤进行的测试,千万别忘了在执行本步之前,先清除之前的复制环境,并删除目标端member下所有对象。

1、 执行创建

除了清除之前的复制环境,删除原目标端schema中对象外,就没啥别的要做了,直接执行创建即可,创建非常简单,基本就是一个过程的事情。

首先在源端以strmadmin登陆:

JSSWEB> conn strmadmin/strmadmin

Connected.

JSSWEB> BEGIN

2 DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(

3 schema_names => ¨member¨,

4 source_directory_object => ¨mydt_source¨,

5 destination_directory_object => ¨mydt_dest¨,

6 source_database => ¨jssweb.jss.cn¨,

7 destination_database => ¨jssstr.jss.cn¨,

8 perform_actions => true,

9 dump_file_name => ¨export_member.dmp¨,

10 log_file => ¨export_member_expdp.log¨,

11 bi_directional => true,

12 include_ddl => true,

13 instantiation => DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA);

14 END;

15 /

PL/SQL procedure successfully completed.

本过程又带来一个新的参数:instantiation ,该参数用来指定是否执行实例化,有如下几种值:

DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA :通过expdp/impdp初始化数据,并在目标端导入数据时执行实例化,默认情况下即是该值。

DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORK :impdp直接通过网络传输数据而不生成dmp文件。在导入数据时执行实例化。

DBMS_STREAMS_ADM.INSTANTIATION_NONE :不执行实例化,该属性值仅当perform_actions参数设置为false时有效。

注意:

由于我们此处选择配置双向复制,因此在执行该过程时,目标端不要对member中对象做任何DML/DDL操作,以免存在数据丢失。

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

MAINTAIN_SCHEMAS 过程支持同时多个schema,比如有多个schema需要复制,则在begin之前声明一个DBMS_UTILITY.UNCL_ARRAY数组变量即可,例如:

DECLARE

tab_schema dbms_utility.uncl_array;

Begin

tab_schema(1):=¨scott¨;

tab_schema(2):=¨member¨;

................

DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(

schema_names => tab_schema,

.............

.............

2、 测试一下

源端执行:

JSSWEB> desc member.dt_tbl1;

Name Null? Type

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

ID NOT NULL NUMBER

NAME NOT NULL VARCHAR2(30)

VL VARCHAR2(20)

JSSWEB> select count(0) from member.dt_tbl1;

COUNT(0)

----------

10 2

JSSWEB> insert into member.dt_tbl1 values (103,¨c¨,null);

1 row created.

JSSWEB> alter table member.dt_tbl1 drop column vl;

Table altered.

JSSWEB> alter system switch logfile;

System altered.

切换到目标端查看:

JSSSTR> select count(0) from member.dt_tbl1;

COUNT(0)

----------

103

JSSSTR> desc member.dt_tbl1;

名称 是否为空? 类型

时间: 2025-01-21 14:09:59

oracle Streams如何创建schema级复制环境的相关文章

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

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

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

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 8高级复制环境

Oracle 高级复制,也称为对称复制.和 Oracle 的其他功能不同, Oracle 的高级复制不是即插即用的,用户必须深刻理解它们是如何工作的以及各种复制方案的优缺点.深刻理解复制的基本概念可以帮助你设计一个可靠的复制环境. 本文主要介绍了搭建 Oracle 8 高级复制环境时需要设置的一些系统参数.需要提醒读者注意的是,笔者所给出的这些系统参数的具体配置数值只能保证可以成功的搭建出一个相对较好的高级复制环境,但本文并未对这些参数的优化配置进行进一步的深入探讨. 现在我们正式开始.假设有两

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实践:如何创建全库复制

正如前面介绍的那样,对于数据库级复制,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

最简单的创建复制环境中只读实体化视图站点的方法

创建|视图|站点 目的:创建一个实体化视图站点,定时刷新,获取主站点中指定表的变化,这个实体化站点可以作为查询服务器使用 步骤: 1.主站点上创建实体化视图日志表 CREATE MATERIALIZED VIEW LOG ON kamus.account2004; 2.实体化视图站点上创建公用数据库链接 conn system/password CREATE PUBLIC DATABASE LINK orcl using 'ORCL'; 3.实体化视图站点上创建刷新组,本例中3分钟刷新一次 co

oracle streams技术详解

原文转自:http://blog.csdn.net/tianlesoftware/article/details/4759356 Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用. Oracle 的消息队列是通过发布/订阅的方式来解决事件管理.流复制(Stream replication)只是基于它的一个数据共享技术,也可以被用作一个可灵活定制的高可用性方案. 它可以实现两个数据库之间数据库级,schema级,Table级的数据同步,并