Enabling supplemental logging in the source database
1° 准备:
源库启用附加日志,首先准备好想要从源库到目标库复制的表的列表
2° OGG需要打开库级附加日志和表级附加日志:
打开库级附加日志:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
切日志,保证配置OGG时的日志全部包含附加日志:
alter system archive log current;
打开表级附加日志:
su - oracle
cd /ggs
./ggsci
DBLOGIN USERID <USER> PASSWORD <PW>
ADD TRANDATA <SCHEMA>.<TABLE_NAME>
-- 使用具有修改源库对应用户的表的权限的用户登录
-- 可以使用具有DBA权限的用户登录
-- 一般我们会创建专门用于OGG的数据库用户,并赋权
-- 然后使用该数据库用户进行登录,然后操作,如:
-- DBLOGIN USERID system PASSWORD oracle
-- DBLOGIN USERID ggs PASSWORD ggs
-- ADD TRANDATA scott.*
-- 可以使用通配符匹配某用户的所有表
3° 附加日志相关介绍:
附加日志会在redo数据中添加额外的列用来在目标库正确的识别该行
必须先打开库级最小附加日志,然后打开表级附加日志
当打开表级附加日志,会为表创建一个附加日志组,该日志组包含打开附加日志的表的所有列
这个额外的列会根据键约束生成:
首先基于主键生成
如果没有则基于第一个非空唯一键生成
如果没有则基于第一个可空唯一键生成
如果没有则基于所有列生成
OGG只考虑没有虚拟列、用户定义类型或者函数列的唯一性键,我们也可以手动指定
最好为所有表都创建一个主键或者唯一性键,尽量避免基于所有列生成该附加列
4° 表级附加日志开启的两种方法:
ggsci中使用ADD TRANDATA命令
sqlplus中使用ALTER TABLE ADD SUPPLEMENTAL LOG DATA命令
第二种方法更柔性化并且可以人为指定附加日志组名字
但是不能超过30个字符,否则OGG截取前30个字符作为附加日志组名字
官方推荐使用第一种方法
[TOC]