OGG-DDL复制
http://blog.sina.com.cn/s/blog_96d348df0102vg6q.html
OGG目前只支持Oracle和TeraData的ddl复制,Oracle数据库能够支持除去数据库系统对象之外所有对象DDL变化的复制。
配置方法有两种:基于trigger的DDL 和 Native DLL
一. 基于trigger的DDL
源库建立一个Oracle全库级的Trigger(SYS.GGS_DDL_TRIGGER_BEFORE)调用ddl_setup.sql生成的package(DDLReplication )捕捉DDL操作到中间表(默认为:GGS_MARKER/GGS_DDL_HIST),CAPTURE通过CSN把DDL和DML排序后进行相应的组装然后投递到目标端。
DDL和DML是相互独立存在的,DDL复制是基于Trigger/DML复制基于日志文件,DDL捕捉的是sql语句/DML捕捉的是LCR。DDL复制的Trigger建立和启用后,无论DML复制是否运行,该Trigger一直在发生作用,捕捉DDL sql语句到中间表。Trigger被禁止后不再抓取DDL操作。因此,DML复制的起停并不影响DDL的捕获。打开DDL复制后能够对新创建的对象自动添加其对应的附加日志。
GGS_MARKER由marker_setup.sql生成,存储数据库里面所有的DDL语句,基本相当于log里面的内容,GGS_MARKER_SEQ为GGS_MARKER生成PK,一次DDL操作会在GGS_MARKER中写入2条记录。记录了表记录的序列号/Object ID/对应GGS_DDL_HIST的序列号/DDL语句等等。可以在GLOBALS中自定义表名MARKERTABLE,不指定就用默认名称。
GGS_DDL_HIST存储oracle非系统用户的DDL语句(当然要符合DDL INCLUDE ALL) ,但是不包括create语句,GGS_DDL_SEQ为GGS_DDL_HIST生成PK。可以在GLOBALS中自定义表名DDLTABLE,不指定就用默认名称。
限制-要求:
1.两端必须是OGG支持DDL数据库,且不支持Oracle Standby DB的DDL抽取。
2.支持双向复制的DDL仅限2个节点支持的复制,不支持多对多体系。
3.两端的表结构保持一致即replicat中设置ASSUMETARGETDEFS参数。
4.不支持DDL transform,但是支持map对应用户及对应对象和filter。
5.DDL语句必须小于2M大小。
6.DATA PUMP进程不负责任何的map和filter,使用PASSTHRU让该进程只复制传输Trail文件。
7.数据库每日产生日志量不宜过大,如:100GB以下。
8.应用系统在数据库中不能有频繁的DDL操作,如频繁建立中间表等操作。
CAPTURE是默认关闭DDL的,而DATA PUMP进程和REPLICAT进程的DDL开关默认是打开的,只要在CAPTURE进程中配置DDL复制参数即可,但是建议在replicat中配置DDL相关属性。REPLICAT进程默认是所有DDL都复制,如果有多个REPLICAT进程运行,此时在参数中不进行复制范围限制,必然引起DDL的重复复制,所以在每个REPLICAT进程都需要进行配置,OGG管理用户和Oracle数据库自带的系统用户的DDL操作将不会被复制,当开启Full DDL(ALL Scope)支持时,不需要在参数文件中使用GETTRUNCATES参数 。
格式:
DDL [ {INCLUDE | EXCLUDE} [, MAPPED | UNMAPPED | OTHER | ALL] [, OPTYPE ] [, OBJTYPE ‘’] [, OBJNAME “”] [, INSTR ‘’]
样例:
DDL &
INCLUDE ALL &
EXCLUDE OPTYPE DROP &
EXCLUDE OPTYPE TRUNCATE &
INCLUDE MAPPED OBJTYPE 'table' &
INCLUDE MAPPED OBJTYPE 'index' &
EXCLUDE OPTYPE COMMENT &
DDLOPTIONS NOCROSSRENAME REPORT
DDLOPTIONS ADDTRANDATA REPORT
查看关于DDL信息
1.查看GGS_MARKER表,也可以从DDL生成日志中查看(user_dump_dest/ggs_ddl_trace.log)
[oracle@tianbaobao trace]$ tail -f ggs_ddl_trace.log
SESS 4294967295-2015-02-16 00:22:21 : DDL : ************************* Start of log for DDL sequence [11], v[ OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1] trace level [0], owner schema of DDL package [OGG], objtype [ROLE PRIVILEGE] name [.]
SESS 4294967295-2015-02-16 00:22:21 : DDLTRACE1 : Before Trigger: point in execution = [1.0], objtype [ROLE PRIVILEGE] name [.]
SESS 4294967295-2015-02-16 00:22:21 : DDL : DDL operation [grant GGS_GGSUSER_ROLE to ogg ], sequence [11], DDL type [GRANT] ROLE PRIVILEGE, real object type [ROLE PRIVILEGE], validity [], object ID [], object [.], real object [.], base object schema [], base object name [], logged as [SYS]
SESS 4294967295-2015-02-16 00:22:21 : DDL : Start SCN found [1190575]
SESS 4294967295-2015-02-16 00:22:21 : DDL : ------------------------- End of log for DDL sequence [11], no DDL history metadata recorded for this DDL operation
2.查看GGS_DDL_HIST表,可以在GGSCI中 dumpddl show,这里是看不到CREATE语句的。
GGSCI (tianbaobao.ht8888.ht3 as ogg@dbsource) 5> dumpddl show
*** Dumping DDL Metadata for DDL sequence [14]...
Time of capture = Before DDL
Time of DDL operation = 2015-02-16 01:42:54
DDL operation (maybe partial) = [drop table t11 purge ]
Start SCN of DDL operation = 1194687
DDL operation type = DROP
Object type = TABLE
DB Blocksize = 8192
Object owner = TIANBAOBAO
Object name = T11
Object ID = 87865
Data object ID = 87865
Object valid = VALID
Clustered columns =
Log group exists = 1
Log group column#0 = ID
Subpartition = NO
Partition = NO
Total number of columns = 1
Number of columns used = 1
Column #1, name = ID
Column #1, ID = 1
Column #1, type = 2
Column #1, length = 22
Column #1, is NOT NULL = 1
Column #1, precision =
Column #1, scale =
Column #1, charset ID = 0
Column #1, charset form = 0
Column #1, alternate column ID = 1
Column #1, alternate name = ID
Column #1, alternate type = NUMBER
Column #1, alternate precision =
Column #1, alternate char used =
Column #1, alternate XML type = 0
Finished displaying metadata information (sequence number [14], DDL history table [ogg.GGS_DDL_HIST]).
3.可以通过logdump中查看
4.REPORT
参数文件中加入ddloptions report后,使用report命令可以查看关于DDL相关信息。
GGSCI (tianbaobao.ht8888.ht3) 1> view report ext_001
2015-02-16 00:40:56 INFO OGG-06507 MAPTABLE resolved (entry ogg.GGS_MARKER): TABLE "OGG"."GGS_MARKER".
2015-02-16 00:40:57 INFO OGG-06509 Using the following key columns for source table OGG.GGS_MARKER: SEQNO, FRAGMENTNO, OPTIME.
定期清除数据
长时间使用DDL复制,会在很多地方不断的增长相应记录,需要定期清除,避免空间占用率过大引起不必要的故障。
1.GGS_MARKER表数据可以通过配置MGR参数PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30来定期删除。
每30分钟purge一次,保持最近 3天未修改过的记录,但是超过5天未改变的记录将purge。
2.GGS_DDL_HIST表数据可以通过配置MGR参数PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30 来定期删除。
长期的insert,delete操作使碎片严重化,影响DDL复制性能,需定期清理碎片(shrink space),降低HWM。
3.调用ddl_cleartrace.sql删除DDL日志文件。
OGG也不是万能的,目前OGG还是有些对象无法复制
create job是不支持复制的
create trigger 是可以复制的,且enable状态,初始化过程中必须手工设置为disable或replicat参数中加入DBOPTIONS SUPPRESSTRIGGERS (DB版本:10205\11202)
Create tablespace是可以复制的,可以支持复制到不同文件目录,需要路径转换。样例: DDLSUBST '/oradata/orcl/' with 'd:\oradata\orcl'
create table ** as select * from **,最终结果按照本地的数据来
rename t1 to t2会被转换成alter table t1 rename to t2
flashback table * to before drop是不支持复制的
DDL性能调整
修改Params.sql define _ddl_rule_hint = '‘ 或者在GLOBAL文件中增加: DDLRULEHINT ,修改前切记备份。
SQL> @?/rdbms/admin/dbmspool.sql SQL> @ddl_pin goldengate 把DDL相关对象pin在内存中。
二. 基于native的DDL
Native DLL(通过logmining Server进行日志解析 – ogg12c+integrated extract+db11204及 以上)
基于Integrated模式,通过logmining Server进行日志解析,DDL复制参数配置和基于Trigger模式下一致。
版本要求:
OGG12c及以上
DB11204及以上
compatible参数设置11.2.0.4及以上
使用Downstream模式下,sourcedb也必须满足以上要求。
OGG-DDL复制的更多相关文章
- GoldenGate配置(三)之DDL复制配置
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huangyanlong/article/details/33430293 GoldenGate配置( ...
- 异构GoldenGate 12c 单向复制配置(支持DDL复制)
1.开始配置OGG支持DDL复制(在source端操作) 1.1 赋予权限 SQL> conn /as sysdba 已连接. SQL> grant execute on utl_file ...
- OGG replicat复制进程的拆分
参考资料: 1.https://blog.csdn.net/datingting1/article/details/79583690
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- GoldenGate 应用系统升级
(仅复制DML时)源端和目标端数据库增减复制表 增加复制表 在GoldenGate的进程参数中,如果通过*来匹配所有表,因此只要符合*所匹配的条件,那么只要在源端建立了表之后GoldenGate就能自 ...
- ogg的安装配置 配置双向同步(含DDL)
第一部分 先配置单向同步(含DDL) 一 源端安装GoldenGate 创建用户 创建目录 mkdir -p /opt/ogg chmod -R 777 /opt/ogg chown -R oracl ...
- 【OGG】OGG的单向DML复制配置(一)
[OGG]OGG的单向DML复制配置(一) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...
- 【OGG】OGG的单向复制配置-支持DDL(二)
[OGG]OGG的单向复制配置-支持DDL(二) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的 ...
- 配置ogg异构oracle-mysql(1)基础环境配置
一.环境描述: 192.168.0.164 ( Oracle ) —> 192.168.0.165 (Mysql ) 版本: 操作系统:redhat5.8 Oracle: 11.2.0.3 M ...
- OGG同构(ORACLE-ORACLE)、异构(ORACLE-MYSQL)同步配置及错误解析
环境:11.2.0.3(已安装数据库实例)+OEL5.7 192.168.1.55 zlm sid:zlm11g 192.168.1.60 zlm2 sid:zlm11g 一.安装软件,配置环境,创建 ...
随机推荐
- 编写的Java第一个程序
没什么好介绍的,嘻嘻 package head; public class ee { public static void main(String[] args) { System.out.print ...
- TMS320F28335——下载程序到flash中
一.让CCS软件支持Flash烧写 添加F28335.cmd文件 如图屏蔽掉25335_RAM_lnk.cmd 2.支持从Flash中拷贝文件到RAM中 添加DSP2832x_MemCopy.c 在主 ...
- oracle数据的导入导出(两种方法三种方式)
大概了解数据库中数据的导入导出.在oracle中,导入导出数据的方法有两种,一种是使用cmd命令行的形式导入导出数据,另一种是使用PL/SQL工具导入导出数据. 1,使用cmd命令行导入导出数据 1. ...
- 【学习总结】快速上手Linux玩转典型应用-第1章-课程介绍
课程目录链接 快速上手Linux玩转典型应用-目录 1. Linux有什么用 2. 课程安排 3. 课程收获 基本运维能力,等等 END
- Postgresql重安装报错The database cluster initialisation failed.
之前安装过PostgreSQL-9.6.5,卸载后,重装PostgreSQL-9.1.3版本,报错. 清除注册表,删除postgres账户,清除垃圾后,再次安装仍然报错. 最后改变默认安装路径,神奇的 ...
- Huawei交换机路由器远程Telnet配置
<huawei>system-view Enter system view, return user view with Ctrl+Z.[huawei]interface g0/0/0[h ...
- MySQL索引的分类、结构、使用场景
MySQL索引分类 1.主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引 语法: 随表一起建索引: CREATE TABLE customer (id INT(10) UNSIGNE ...
- Apache 配置IP站点
配置临时生效 IP: [root@Nagios-Server extra]# ifconfigeth0:0 192.168.1.126/24 up [root@Nagios-Server extra] ...
- 基于ldap+sentry+rbac的hive数据库权限测试
1.rbac系统简介 2.sentry系统简介 3.ldap系统简介 4.整个待测系统简介 user-role=group-role user-role是用户在rbac系统创建项目以及把项目成员以及给 ...
- bzoj4998 星球联盟 LCT + 并查集
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4998 题解 根据题意,就是要动态维护点双,求出一个点双的权值和. 所以这道题就是和 bzoj2 ...