首先据官方公布:不支持和有限支持的DDL类型
(1). Oracle数据库SYS、SYSTEM等等系统内部的用户不支持修改同步;
(2). oracle11g 及以上版本数据库DDL支持和Oracle回收站功能;
(3). ogg支持不超高2M长度的DDL语句;
(4). ogg只支持单向的DDL复制,不支持双向的DDL复制;
(5). ogg只支持源端和目标端结构一致;
DDL处理方法
一. 不支持DDL类型的处理方法
1. 不支持的Schema,OGG默认不复制,不许更多设置;
2. 关闭Oracle回收站:alter system set recyclebin=off scope=both;
二. 受限支持DDL类型的处理费方法;
1. 通过脚本ddl_ddl2file.sql获取被忽略的Oracle DDL操作,将其获取的操作放在USER_DUMP_DEST目录一个文本文件中
2. 投递过程中必须使用ASSUMETARGETDEFS参数
3. DDL复制的配置
(1). Oracle DDL复制的原理
(2). 安装GoldenGate DDL对象
(3). 配置DDL支持
(4). DDL异常与错误处理
Oracle DDL复制的原理
1. DDL复制原理
基于数据库全局Trigger的复制,在源数据建立一个Oracle全库级别的Trigger捕捉DDL操作到中间表,Extract读取中间表DDL语句并与DML语句根据csn排序,Pump投递到目标端,目标端Replicat在重现该DDL语句;
2. DDL复制和DML复制的区别
(1). DDL复制是基于Trigger;
(2). DML复制是基于日志;
(3). 只是在主Extract进程中通过scn号安装发生顺序进行组装,保证DDL操作和DML操作按照原来的顺序之下;
3. DDL复制和DML复制的关系
DDL复制和DML复制可以项目独立,可以只启动DDL复制,也可以只启动DML复制,相互并不影响,他们之间只是在Extract进行组装时根据scn号进行排序;
操作演示
一、创建相应的用户以及表空间
sqlplus / as sysdba
create tablespace ogg datafile '/soft/TEST/ogg01.dbf' size 10M;
create user ogg identified by oracle default tablespace ogg;
二、赋权
GRANT CREATE TABLE,CREATE SEQUENCE TO OGG; -----必须
GRANT EXECUTE ON UTL_FILE TO ogg
GRANT CONNECT TO ogg;
GRANT CREATE SESSION TO ogg;
GRANT ALTER SESSION TO ogg;
GRANT RESOURCE TO ogg;
GRANT SELECT ANY DICTIONARY TO ogg;
GRANT SELECT ANY TABLE TO ogg;
GRANT FLASHBACK ANY TABLE TO ogg;
GRANT ALTER ANY TABLE TO ogg;
grant create table to ogg;
grant dba to ogg;
三、创建全局参数文件
./ggsci
EDIT PARAMS ./GLOBALS
GGSCHEMA ogg
四、 以sysdba角色运行相应脚本
@marker_setup.sql
alter system set RECYCLEBIN=off; --运行ddl_setup前必须保证关闭数据库的回收站特性
@ddl_setup.sql
@role_setup.sql
GRANT GGS_GGSUSER_ROLE to ogg;
@ddl_enable.sql
关闭
@ddl_disable.sql
查看状态
@ddl_status.sql
验证脚本安装
@marker_status
NOTE:在源端ogg的ddl支持是默认关闭的,如果需要启用的话需在extract进程的参数文件中加入ddl参数;
在目标端ogg的ddl支持是默认开启的,如果有其他需求可以在replicat进程的参数文件中使用ddl参数来
过滤或或者忽略某些ddl操作。