ddl复制

DDL复制是基于触发器的捕获模式(这也是oracle11.2.0.4之前版本下唯一的方式),因此,需要先在模式下建立触发器及触发器所用的数据库对象。GG提供了一系列sql脚本来创建这些触发器及相关的数据库对象。注意:DDL语句的数据量不能超过2MB。

        grant create table,create sequence to ogg;
        GGS_MARKER                   DDL marker表,用于存储DDL信息。 表中将只存有insert语句。
        GGS_DDL_SEQ                  marker表中用作序列。  
        GGS_DDL_HIST                  DDL历史记录表,用于保存对象的原数据的历史数据。该表接受inserts, updates, 和deletes.
        GGS_DDL_HIST_ALT              保存配置对象ID的表
        GGS_DDL_TRIGGER_BEFORE       DDL触发器触发DDL操作。操作信息写到maker表和历史表。
        DDL Schema                    包含DDL同步的对象。必须在安装时定义,存在于GLOBALS文件中。
        GGS_GGSUSER_ROLE             运行DDL操作所需的角色。
        ddl_pin                        用于在内存共享池中保持DDL tracing, DDL package, 和DDL trigger。主要是为了提高性能。
        
        ddl_cleartrace.sql                删除DDL trace文件的脚本
        ddl_status.sql                   校验脚本,用于校验DDL对象是是否安装好了。
        marker_status.sql                校验脚本,校验GGS_MAKER表是否安装好了。
        ddl_tracelevel.sql                设置DDL追踪级别的脚本。

1 授予ogg执行uti_file包的权限

grant execute on utl_file to ogg;
edit params ./GLOBALS
GGSCHEMA  ogg

2.为ogg创建触发器及其相关的数据库对象

进入goldengate软件安装目录,以SYSDBA身份登录oracle执行以下脚本,执行脚本过程中,需要输入的用户全部是ogg,安装模式为INITIALSETUP,如果数据字典或者某些内部的包有错误,则需要运行catalog.sql和catproc.sql脚本。
如果某项脚本执行错误,需要重新执行时,先要执行清除的脚本:ddl_remove.sql和marker_remove.sql

执行下列步骤,为ogg创建触发器及其相关的数据库对象:
           进入goldengate软件安装目录,以SYSDBA身份登录oracle执行以下脚本,执行脚本过程中,需要输入的用户全部是ogg,安装模式为INITIALSETUP,如果数据字典或者某些内部的包有错误,则需要运行catalog.sql和catproc.sql脚本。
	       如果某项脚本执行错误,需要重新执行时,先要执行清除的脚本:ddl_remove.sql和marker_remove.sql
SQL>@marker_setup           会要求输入GG的schema名字,选择ogg
                            注意:10g及之前的版本,要求实例参数recyclebin置为off。
SQL>@ddl_setup              说明: ogg用户的缺省表空间若何其它用户共享,会报错。另外,11.1.1.2需要手动输入 ogg,INITIALSETUP,yes。
SQL>@role_setup             根据提示,执行授权名令:
          SQL>grant GGS_GGSUSER_ROLE to ogg;
SQL>@ddl_enable
SQL> @marker_status.sql 

配置抽取进程组,缺省下,源端不支持DDL操作,而复制端(即目的端)支持DDL
     修改配置文件eora_1,增加下一行:
       ddl include all                            all表示包括三个范围:mapped,nomapped和other
--------------目的端复制时报错处理--------------------
     目的端报错:
       ERROR   OGG-00519  Oracle GoldenGate Delivery for Oracle, rora_1.prm:  Fatal error executing DDL replication: error [Error code [1921], ORA-01921: 角色名 'GGS_GGSUSER_ROLE' 与另一个用户名或角色名发生冲突 SQL  /* GOLDENGATE_DDL_REPLICATION */ CREATE ROLE GGS_GGSUSER_ROLE  /* GOLDENGATE_DDL_REPLICATION */], no error handler present.
      解决办法是,复制组rora_1组的配置文件加入:
      ddlerror default ignore retryop  


***************DDL双向复制过程*************
  四、双向DDL复制时,也要解决循环复制问题。OGG的抽取组设置中缺省忽略复制产生的DDL语句,因此,缺省不会产生循环复制。
      1、修改目的端的抽取组配置文件,加入
           ddl include all


所有的组随管理程序一起启动:
    修改mgr配置文件,加入:
    autostart  er *ora*                        所有包含ora字符的组随管理程序启动。
******************************************************************************************************

Veridata
=======================================================================================
      veridata使用比较算法来对比源和目的之间的复制是否一致。它由一个或几个代理进程和专用的资料库服务器组成,资料库服务器上保存着veridata使用的元数据对象。代理进程安装在gg的节点上,将所需比较的对象的数据传送到服务器,由服务器来完成比较,给出结果。因此,服务器资源消耗较大,现实中多用单独的主机完成,可使用oracle、mysql及SQLserver作为数据库保存资料数据。我们的项目中不采用单独服务器的方式,选gg中的一个节点作服务器。
     对于标准的veridata安装,要安装配置下列组件:
        Veridata web
        Veridata server
        Veridata Agent
        Veridata  CLI
        要比较的源和目的节点

agent要求:

server要求:
drop table mytest cascade constraints;
Ddl Include all:所有ddl语句都会传到对边(现实生活中ddl语句是有选择的,还可以正对对象选择and操作类型进行选择传送)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韶博雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值