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

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

这里一方面为了给大家演示,另外一方面也是加深大家的理解,在本部分的最后一项配置,三思决定采取生成脚本,而不直接执行配置的方式,以便大家能有机会,详细了解streams配置的实际执行步骤。

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

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

复制schema:member中对象,部分同步DML,部分同步DDL操作;

本地捕获,单向同步;

DBMS_STREAMS_ADM.MAINTAIN_TABLES 生成 配置 脚本;

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

1、 生成创建脚本

由于此处也是借用前面搭建好的环境测试,因此准备工作全省下了,我们直接执行maintain_tables即可:

JSSWEB> conn strmadmin/strmadmin

Connected.

JSSWEB> DECLARE

2 tbls DBMS_UTILITY.UNCL_ARRAY;

3 BEGIN

4 tbls(1) := ¨member.dt_tmp¨;

5 tbls(2) := ¨member.dt_tbl1¨;

6 tbls(3) := ¨member.dt_tbl2¨;

7 DBMS_STREAMS_ADM.MAINTAIN_TABLES(

8 table_names => tbls,

9 source_directory_object => ¨mydt_source¨,

10 destination_directory_object => ¨mydt_dest¨,

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

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

13 perform_actions => false,

14 dump_file_name => ¨export_tbls.dmp¨,

15 log_file => ¨export_tbls_expdp.log¨,

16 script_name => ¨configure_rep.sql¨,

17 script_directory_object => ¨mydt_source¨,

18 bi_directional => false,

19 include_ddl => true,

20 instantiation => DBMS_STREAMS_ADM.INSTANTIATION_TABLE);

21 END;

22 /

PL/SQL procedure successfully completed.

这里有些参数你已经见过多次,有些参数,你还从未接触过:

Table_names :没啥好说的吧,仅提示一点,如果要复制的只有一张表的话,不需要定义DBMS_UTILITY.UNCL_ARRAY数组变量,直接调用MAINTAIN_TABLES时指定table_names等于表名即可。

Script_name :由于此处没有直接配置复制环境,而是生成配置脚本,该参数即是指定生成的脚本名称。

Script_directory_object :本参数指定生成的脚本所在目录(Oracle Directory对象,前面也提到过的)。

Instantiation :这个参数前面见过配置schemas复制环境里提过,不过对于表级复制,该参数值与schemas复制时的instantiation略有差异,就是将SCHEMA改为TABLE即可,各参数值代表意义与schema时相同,不再详述。

2、 查看生成脚本

前面执行配置时将脚本生成到Directory对象mydt_source中,首先查看该目录实际指向的操作系统路径:

JSSWEB> select * from dba_directories where directory_name=¨MYDT_SOURCE¨;

OWNER DIRECTORY_NAME DIRECTORY_PATH

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

SYS MYDT_SOURCE /data/oradata/jssweb/dmp

通过上述查询确定脚本位于操作系统:/data/oradata/jssweb/dmp目录下,直接到该目录中查看生成的脚本文件,执行:

[oracle@yans1 ~]$ more /data/oradata/jssweb/dmp/configure_rep.sql

脚本较长,这里不全部贴出,你可以在自己的测试环境中详细浏览,如果需要修改,直接修改该脚本文件即可。

3、 执行脚本

脚本修改完之后,源端以strmadmin登陆并执行即可,如下:

JSSWEB> conn strmadmin/strmadmin

Connected.

JSSWEB> spool configure_rep.log

JSSWEB> @/data/oradata/jssweb/dmp/configure_rep.sql

JSSWEB> SET VERIFY OFF

JSSWEB> WHENEVER SQLERROR EXIT SQL.SQLCODE;

JSSWEB>

JSSWEB>

JSSWEB>

JSSWEB> -------------------------------------------------------------------

JSSWEB> -- get TNSNAME and streams admin user details for both the databases

JSSWEB> --------------------------------------------------------------------

时间: 2024-10-27 10:46:17

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

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

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

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级的数据同步,并