1. Oracle补全日志
默认情况下redo日志中只记录rowid以及被修改的字段的信息。当GoldenGate还原该事务,是SQL层面根据唯一键值来定位记录,故需要将主键或其他字段信息附近到日志中。
- 最小附加日志,是开启logmnr的最低日志要求,9.2之后默认不开启
- 主键补全,若表中无主键,则补全一个非空唯一索引列;否则补全非LOB和LONG类型字段以外的所有列,此时和所有补全一样
- 唯一键补全,打开唯一键补全也同时打开主键补全
- 外键补全,当外键被修改时,将在日志中补全所有外键列
- 所有补全,在日志中补全所有字段(排除LOB和LONG类型)
Notice:以上5种类型,除最小附加日志级别,都可以在表级进行设置;
若DB未打开最小附加日志级别,即便指定了表级补全日志,实际redo仍记录rowid和相关列值;
若要关闭最小补全日志,也须首先关闭DB即便的其他补全日志才能关闭。
2. DDL 复制 Source端创建一个Oracle全库级的触发器,将捕捉DDL操作到中间表,Extract读取中间表DDL语句并与DML语句根据SCN号排序。DML和DDL数据抽取相互独立。
3. Manager默认端口7809,同一系统上的不同Manager实例使用不同的端口号。
4. OGG工作目录
dirchk:存放检查点文件
dirdat:存放trail文件
dirdef:存放通过DEFGEN工具产生的源或目的数据定义文件
dirpcs:存放进程状态文件
dirprm:存放配置文件
dirrpt:存放进程报告文件
dirsql:存放SQL脚本文件
dirtmp:当事务所需内存超过分配内存时,默认存储在该目录下
5. 安装OGG DDL对象
- 停止所有Extract进程,MGR进程
- 指定源端数据库的模式,即在GLOBALS文件中指定schema参数,意为DDL复制有该用户来承担
- 关闭recycle bin
- 运行安装DDL对象的脚本,脚本均位于OGG安装目录下
marker_setup.sql --准备
ddl_setup.sql --准备
role_setup.sql --创建DDL复制角色
ddl_enable_sql --开启DDL复制功能
marker_status.sql --验证DDL状态
5. 配置DDL支持
- 停止所有端的Extract和Replicat
- 修改Extract配置文件,添加如下内容:
ddl include all
ddloptions addtrandata,report
ddloptions report
6. DDL复制注意事项:
- 10g以后但11gR1之前的数据库版本,需关闭回收站功能
- OGG只自动支持长度小于2M的DDL复制
- DDL复制仅支持2个系统间的同步
- 在Replicat配置文件中需要使用ASSUMETARGETDEFS参数
- Pump须使用PASSTHRU的工作模式
- 保证同一组Extract和Replicat进程负责单个或多个相关表的DML复制和DDL复制
7. 源、目标端增减复制表
1) 增加复制表,仅打开DML复制时
a. 源端进程参数通过 * 匹配所有表,或者在Extract参数文件table列加入新增复制表
b. 为新增表添加附加日志:
dblogin userid ······
info trandata schema.tabname --若不是enable,手动加入
add trandata schema.tabname
c. 在目标端建立新增表的表结构
2) 修改数据表的结构
若新增列,则
- 停止抽取进程、投递进程
- 修改目标表结构
- 修改源表结构
- 如果表结构有主键,且本次修改未修改主键,则直接启动所有进程组,否则:
dblogin userid ······
delete trandata scheme.tabname
add trandata scheme.tabname
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26679417/viewspace-749995/
,如需转载,请注明出处,否则将追究法律责任。